Вся статья - это конспект видео с ютуба "Method Dispatch - Диспетчеризация методов в Swift", пишу для себя, так лучше запоминаю
Диспетчеризация - это процесс выбора имплементации метода при его вызове. Виды диспетчеризации: - Witness-table - Virtual-table Static/Direct_ - прямой вызов метода уже известный на этапе компиляции. То есть метод располагается где-то в памяти, при его вызове извлекается ссылка на этот метод, и начинается его выполнения + Самый быстрый тип диспетчеризации (0-2 ns) - Не реализует полиморфизм и наследование Table (табличная) 1) Witness-table - (про протоколы) + Медленее, чем Static/Direct_ (~3 ns) + Реализует полиморфизм - Не реализует наследование Если класс реализует несколько протоколов, то для каждой такой реализации будет своя Witness-таблица. 2) Virtual-table- (про классы) + Медленее, чем Static/Direct_ (~3 ns) + Реализует полиморфизм + Реализует наследование Как видно method1 не изменился и ссылка у таблицы Child и Parent совпадают