Swift中的协议见证表和vtable有什么区别?

时间:2019-06-27 15:40:36

标签: swift

我试图了解swift的vtable和见证表之间的区别。从理论上讲,它应该是允许动态分配类方法的相同机制。 SIL的文档包含两个段落,提示它们有所不同。但这对我来说有点困惑。

那么,这两者之间到底有什么区别?

1 个答案:

答案 0 :(得分:0)

据我所知,vtables允许动态分派类方法。 该表在编译时生成。

另一方面,见证表允许动态分配泛型类型,因此该表是不同的,因为它需要映射泛型条目以实现相同的结果:动态分配。这些表具有编译器用来“生成运行时调度表”的信息。该信息未在编译时定义。 如果您在文档中签到,见证人表将映射基本协议,基本协议所需的方法以及其关联的类型和协议的一致性(关联的类型)。

不确定我是否正确理解了您的问题?