我用Swift测试了大约isa swizzling个,发现只有当NSObject是一个超级类(直接或更高级)或使用"@objc"装饰时,它才有效.否则,它将遵循一个静态和可调度的调度方式,如C++.
定义一个没有Cocoa/NSObject基类的Swift类正常吗?如果我担心的话,这意味着要放弃Objective-C的许多动态功能,比如方法拦截和运行时内省.
动态运行时行为是特性的核心,如属性观察者、核心数据、Aspect Oriented Programming、Higher Order Messaging、分析和;日志(log)框架等等.
使用Objto-C的方法调用样式,可以将20个机器代码操作数添加到方法调用中,因此在某些情况下(many tight calls to methods with small bodies)C++风格的静态和VTABLE调度可以执行得更好.
但是考虑到一般的95-5规则(95% of performance gains come from tuning 5% of the code),从强大的动态特性开始,并在必要时进行强化难道不合理吗?