Структуры могут реализовывать интерфейсы, называемые протоколами в Swift. У вас может быть параметр, переменная или поле / член, являющийся протоколом, и, поскольку несколько различных структур, не говоря уже о классах, могут реализовывать этот же протокол после передачи (или назначения) структуры параметру протокола (или переменная или поле), специфика того, какой структурой он мог бы быть, «потеряна» (время повторной компиляции) и вступает в игру таблица-свидетель протокола (время выполнения: повторная)
Вы можете узнать больше о разметке памяти Swift .
Подобное происходит в C #, с которым я более знаком. Структура, передаваемая или присваиваемая переменной интерфейса или полю / члену, упакована в штучной упаковке, и представление в штучной упаковке структуры соответствует представлению класса, что означает, что существует структура для коробчатых структур.
Я ожидаю, что и C #, и Swift будут делать прямые вызовы, когда элемент известен во время компиляции как структура, и использовать vtable dispatch, когда во время компиляции элемент известен только как интерфейс.