«Swift Method Dispatch»- Вероника Тишковская | SoftTeco iOS Talks
ฝัง
- เผยแพร่เมื่อ 6 ก.พ. 2025
- ⚙️ Диспетчеризация методов в Swift / Swift Method Dispatch
🔹 Диспетчеризация в Swift и ее виды
🔹 Value vs Reference Types в Swift
🔹 Примеры кода
Тему разобрала Вероника Тишковская в рамках проекта SoftTeco iOS Talks ⚡️
#SoftTecoiOSTalks #SoftTeco #SoftTecoTeam #iOS #Swift
---------------------------------------------
Наши соц.сети
Telegram SoftTeco Team- t.me/softteco_...
Instagram- / softteco.community
VK- softteco
FB- / softtecoteam
Telegram-чат комьюнити «Третья среда программиста»- t.me/Sredaprog...
Вот немного интересной информации по теме диспатчей)
developer.apple.com/swift/blog/?id=27
betterprogramming.pub/a-deep-dive-into-method-dispatches-in-swift-65a8e408a7d0
developer.apple.com/videos/play/wwdc2016/416/
Лучшее видео о Dispatch
пересматриваю иногда когда начинаю забывать и путаться, все встает на свои места)
Очень круто! Без воды, все кратко и по существу!
Спасибо, передадим спикеру)
Спасибо! Перед собеседованием освежить память, самое то!
Спасибо большое! Кратко и понятно, с примерами, наконец в голове уложилось)
Заходите к нам еще)
разьеб , топ объяснение ! спасибо
Спасибо за понятное объяснение)
Лайк перед просмотром!!!
Коротко и просто. Спасибо!
Спасибо, заходите к нам еще)
Очень круто, самое лучшее объяснение
Спасибо, мы старались)
Офигенное видео, спасибо большое
Спасибо, заходите к нам еще)
Классная идея с примерами для самопроверки
Вопрос по Virtual таблице. В указанных таблицах на 6:04 указаны одинаковые адреса для Parent & Child (0xA00). Было сказано, что таблица копируется от родительского для дочернего класса. Но не должны ли поменяться адреса для самих таблиц?
Условно в таблице Parent адрес для someMethod это 0x121, что будет происходить когда в рантайме будет триггер этой функции и она пойдёт по адресу таблицы? Ранлуп будет обрабатывать 0xA00, он дёрнет метод по 0х121, хотя вызов был из дочернего класса.
Опечатка или фича? Подскажите, пожалуйста, интересно
Возможно тупой вопрос, но почему witness только у эпла, ведь у других языков есть "интерфейсы" (это же аналоги протоколов?)?
Спасибо за разбор темы. Там так же приведён важный параметр - относительное время на диспетчеризацию, чтобы понимать примерные масштабы и не терять голову с оптимизациями там, где это не требуется.
И остался вопрос - не изучили ли вы методы определения диспетчеризации? Вижу только один способ - просмотреть сгенерированный assembler'ный код. Но может есть у XCode встроенный инструмент, юзающий Swift Intermediate Language?
👍
о каких статьях она говорила?
Не знаю почему, но она мне нравится)
Спасибо! 🙂
Спасибо!) очень понятно
Спасибо, заходите к нам еще)
не хватает немного как диспатчатся дженерики
а что, если структура/массив превышает размер 6 байт? из стека в хип перемещаемся. ненужная инфа, понадобится только на собесе) про свизлинг молчу, он применяется обычно для исправления багов иос) свизлинг в свифте? не видел
А где обещанные ссылки на литературу?
Доброго дня. Поместили ссылки в заклепленном комментарии.
Мерси!
Почему если мы используем метод из экстеншна класса это будет статическая диспетчеризация ??
Так как методы из extension нельзя переопределить, они будут иметь всегда одну реализацию. Компилятор знает, что реализация метода в extension будет одинаковой для всех экземпляров этого типа данных. Поэтому, компилятор может принять решение о вызове этого метода на этапе компиляции, что является признаком статической диспетечеризации.
Понял, спасибо 🔥
Интересно
Можно еще прикрепить свой гитхаб
О как мы за 30 лет далеко ушли
!!
что за пришельцы на фоне