在Swift中,我们是“发送消息”还是“调用方法/函数”?

svmlkihl  于 12个月前  发布在  Swift
关注(0)|答案(1)|浏览(100)

Swift是否在编译时保留方法查找列表,或者它是否在特定的内存位置调用函数?
关于this

nwlls2ji

nwlls2ji1#

我建议你看一下下面的链接,尤其是第一个,因为它用C和C的例子解释了概念,以便更好地理解静态,延迟和动态分派之间的区别(对于方法)。
简单地说:

静态调度

函数及其实现在编译时确定,因此不会在运行时失败(因为除非绑定成功,否则编译器不会继续编译过程)。

延迟派单

函数在编译时确定,但实际实现取决于运行时对象的类型。对继承很重要。编译器将检查类或其任何父类是否声明了函数,但由运行时选择使用哪个实现。后期绑定可以像C++那样使用虚拟表来实现。

动态调度

该函数在运行时确定,在C2C-C的情况下,可以通过名称调用,因此如果接收方(对象)没有实现或继承可以响应指定消息的方法,则可能在运行时失败。

引用

相关问题