iOS Swift运行时是如何工作的
在iOS Swift运行时是如何工作的,ios,swift,runtime,Ios,Swift,Runtime,在ObjC中,它使用消息传递,静态绑定,动态键入,动态绑定,动态方法解析,动态加载,内省等等 重要的是,核心方法objc_msgSend负责获取要发送的选择器和要发送到的对象,并在类方法表中查找该选择器,以确定应该由哪段代码来处理它 我关注的是: Swift是否在运行时执行类似于ObjC的操作 Swift运行时如何找到某些对象/类方法的实现代码 在ObjC中,类和对象被编译成一些运行时类型,例如运行时的C结构。那么在Swift中运行时编译到的类和对象是什么 Swift运行时是否具有类似于clas
ObjC
中,它使用消息传递
,静态绑定
,动态键入
,动态绑定
,动态方法解析
,动态加载
,内省
等等
重要的是,核心方法objc_msgSend负责获取要发送的选择器和要发送到的对象,并在类方法表中查找该选择器,以确定应该由哪段代码来处理它
我关注的是:
Swift
是否在运行时执行类似于ObjC
的操作Swift运行时
如何找到某些对象/类方法的实现代码ObjC
中,类
和对象
被编译成一些运行时类型
,例如运行时的C结构
。那么在Swift
中运行时编译到的类和对象是什么
Swift运行时
是否具有类似于class/meta class/isa指针/super指针的功能
简言之,方法调用调度有动态和静态两种类型
private
方法或final
类方法调用调度private
关键字标记方法,或者您的类不是final
,同时您的类是“纯”Swift(它不继承NSObject),则使用这种基于虚拟表的机制。这意味着默认情况下所有方法都是virtual
附言。
有助于证明我对“类型”的看法的链接:
“子类型”的解释是基于我的理解 你能举个例子吗?@Boris我所回答的与#1和#2有关。关于#3和#4,我确信斯威夫特肯定有一些东西,但这并没有稳定下来。最初计划在Swift 3.0版本中稳定ABI,但飞机有所改变: