Skip to content

Latest commit

 

History

History
18 lines (11 loc) · 2.31 KB

5.6.3 TableDispatch.md

File metadata and controls

18 lines (11 loc) · 2.31 KB

2) Table Dispatch (динамическая, делится на Virtual Table и Witness Table

  • Позволяет реализовать принцип полиморфизма из ООП;
  • Во время выполнения программы (в runtime) на основании типа объекта система вызывает метод;
  • Появляются таблицы ссылок на методы;
  • Каждый наследник имеет свою измененную копию таблицы;

Дает ряд преимуществ - можно работать с объектом производного типа как с объектом базового типа и использовать его везде, где требуется объект базового типа.

  1. Virtual table (для классов) - таблица, прикрепленная к классу, реализацию которой следует использовать для каждого переопределяемого метода в классе. В отличие от таблицы методов Objective-C, ключи виртуальной таблицы представляют собой просто смещения, что значительно упрощает поиск за счет динамизма и дублирования информации о непереопределенных методах.

  2. 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