В чем разница между таблицей-свидетелем протокола и vtable в Swift? - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь понять разницу между таблицей Свифта и таблицей свидетелей.Теоретически это должен быть тот же механизм, который позволяет динамически распределять методы класса.Документация SIL содержит два абзаца, предполагающих, что они отличаются.Но меня это немного смущает.

Итак, в чем разница между этими двумя?

1 Ответ

0 голосов
/ 28 июня 2019

В моем понимании, как вы говорите, vtables разрешают динамическую диспетчеризацию методов класса.Эти таблицы генерируются во время компиляции.

Таблицы-свидетели, с другой стороны, допускают динамическую диспетчеризацию универсальных типов, поэтому таблица отличается, потому что ей необходимо отобразить универсальные записи для достижения того же результата: динамическая диспетчеризация.Эти таблицы содержат информацию, которую компилятор использует для «создания таблиц диспетчеризации во время выполнения».Информация не определяется во время компиляции.Если вы проверите в документации, что таблица-свидетель отображает базовый протокол, необходимые ему методы, а также связанный с ним тип и его соответствие протоколов (связанного типа).

Не уверены, правильно ли я понял ваш вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...