Всем привет. В данном выпуске мы разберем такую тему как диспетчеризация в iOS, и покажем на практике подводные камни. Всем хорошего просмотра Подписывайтесь на наш канал в телеграме t.me/ios_prog
Привет, спасибо за материал) У меня вопрос про случай, если в final классе есть метод с одним параметром, тип параметра которого протокольный, при вызове этого метода мы вставляем класс подписанный на этот протокол. В этом случае, при вызове этой функции, диспетчиризация для метода будет witness table, для класса в котором лежит этот метод с параметром протокола будет static? Правильно ли я это понимаю?
Привет, попробуем развернуто)) Если в final классе есть метод с одним параметром, тип которого протокольный, и вы передаете объект класса, который подписывается на этот протокол, то при вызове метода будет использоваться witness table для разрешения динамического типа и вызова соответствующей реализации метода из таблицы. Что касается static, в вашем контексте это не совсем применимо. Когда компилятор Swift видит вызов метода для объекта, тип которого известен в момент компиляции, он может использовать статическое разрешение вызова метода без необходимости в witness table. Так что, вкратце, witness table используется для динамического разрешения методов протоколов, а статическое разрешение может использоваться, когда тип известен в момент компиляции. Как-то так
Нужен монтаж который ускорит написание когда и уберет минуты молчания, оставить только суть и будет полезное видео на 5-10 мин. Плэйграунд мозги делает☝