Что такое witness table и где она используется?
В чем разница между static, virtual table и witness table диспетчеризацией?
Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Рейтинг:
5
Сложность:
8
Witness table — это таблица, которая связывает конкретный тип с реализациями требований протокола. Когда тип соответствует протоколу, компилятор создаёт такую таблицу. Через неё Swift понимает, какие функции вызывать при работе с протоколом. Это основной механизм вызова методов у протоколов. Он используется вместо vtable для value-типов и протоколов.
Рейтинг:
4
Сложность:
9
В Swift есть несколько способов вызова методов. Static dispatch выполняется во время компиляции и самый быстрый. Virtual table dispatch используется для классов и поддерживает полиморфизм. Witness table dispatch применяется при работе с протоколами. Разные виды диспетчеризации нужны для разных задач и имеют разную стоимость.