6
Swift本机基类或NSObject
我测试了一些用Swift 编写的isa,发现它仅在NSObject是超类(直接或更高级)或使用'@objc'装饰时才有效。否则,它将遵循静态和vtable-dispatch样式,例如C ++。 定义没有Cocoa / NSObject基类的Swift类是否正常?如果我担心的话,这意味着要放弃Objective-C的许多活力,例如方法拦截和运行时自省。 动态运行时行为位于属性观察器,核心数据,面向方面的编程,高阶消息传递,分析和日志记录框架等功能的核心。 使用Objective-C的方法调用样式会将大约20个机器代码操作数添加到方法调用中,因此在某些情况下(对带有小实体的方法进行许多紧密调用),C ++样式的静态和vtable分派可以更好地执行。 但是考虑到一般的95-5规则(95%的性能提升来自调整5%的代码),从强大的动态功能入手并在必要时进行强化是否有意义?