【发布时间】:2016-09-15 20:46:52
【问题描述】:
在ObjC中,使用Messaging、static binding、dynamic typing、dynamic binding、dynamic method resolution、dynamic loading、introspector等。
重要的是,核心方法 objc_msgSend 负责获取您要发送的选择器和您要发送到的对象,并在类方法表中查找它们以准确确定应该使用哪段代码处理它。
我担心的是:
Swift是否在运行时执行类似于ObjC的操作?Swift runtime如何找到某个对象/类方法的实现代码?在
ObjC、classes和objects在运行时编译为一些runtime types,例如C struct。那么classes和objects在运行时在Swift中编译成什么?Swift runtime有类似class / meta class / isa pointer / super pointer的东西吗?
【问题讨论】:
-
你能举个例子吗?
-
@Boris 我的回答与#1 & #2 有关。关于#3 和#4,我确信 Swift 肯定有一些东西,但并不稳定。最初计划在 Swift 3.0 版本中稳定 ABI,但平面已更改:infoq.com/news/2016/05/swift-3-no-stable-abi