阅读Swift语言指南,我无法找到明确的信息,Swift是静态调度(像基本的C ++,Java,C#)还是动态调度(像Objective-C)。 语言功能的文档(如类,扩展名,泛型等)似乎表明它是静态类型的,这可能是所谓速度提高的来源。 然而,苹果在WWDC 2014主题演讲中表示,该语言使用与Objective-C相同的运行时,并且与Cocoa / Cocoa Touch非常兼容,这表明它使用动态调度。
将C++、Java和C#描述为静态调度并不特别准确。这三种语言都可以并且经常使用动态调度。
同样,Swift也可以同时使用两种方式。它与ObjC的不同之处在于它并不总是动态调度。标记为@final的方法可以被静态分派,结构体和枚举方法也可以。我相信如果运行时类型可以在编译时证明(类似于C++虚拟化),非final方法也可以被静态分派,但我对细节不太确定。