- Позволяет реализовать принцип полиморфизма из ООП;
- Во время выполнения программы (в runtime) на основании типа объекта система вызывает метод;
- Появляются таблицы ссылок на методы;
- Каждый наследник имеет свою измененную копию таблицы;
Дает ряд преимуществ - можно работать с объектом производного типа как с объектом базового типа и использовать его везде, где требуется объект базового типа.
-
Virtual table (для классов) - таблица, прикрепленная к классу, реализацию которой следует использовать для каждого переопределяемого метода в классе. В отличие от таблицы методов Objective-C, ключи виртуальной таблицы представляют собой просто смещения, что значительно упрощает поиск за счет динамизма и дублирования информации о непереопределенных методах.
-
Witness table (для протоколов) - в SIL в Swift (и во время runtime) представление соответствия протоколу
Cлово Witness - значение или тип, удовлетворяющий требованию протокола. Отсюда и название Witness Table.
5.6.2 Static(direct) Dispatch Theme | Back To iOSWiki Contents | 5.6.4 Message Dispatch Theme