Сопоставление Senior Протоколы, POP и дженерики обновлено

Какой вызов как диспетчеризуется

Вопрос

Сопоставьте вызов и вид диспетчеризации.

Попробуйте сами

Нажмите слева, потом подходящее справа.

Показать ответ и разбор

Коротко

Тип значения нельзя наследовать, поэтому вызовы статические. Метод открытого класса может быть переопределён, нужна vtable.

Правильные пары

Метод struct
Статическая
Непереопределённый метод open class через ссылку на базовый класс
Через vtable
Требование протокола через any P
Через witness table
Метод @objc dynamic
Через Objective-C runtime (objc_msgSend)

Разбор

Тип значения нельзя наследовать, поэтому вызовы статические. Метод открытого класса может быть переопределён, нужна vtable. Требования протоколов через existential идут по witness table. @objc dynamic отправляет сообщение через рантайм, что нужно для KVO.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.