在使用Objective-C的方法交换时,会有哪些性能惩罚?
使用消息交换会破坏哪些编译器优化(如果有)?
在使用Objective-C的方法交换时,会有哪些性能惩罚?
使用消息交换会破坏哪些编译器优化(如果有)?
Swizzling使Objective-C运行时刷新其方法缓存。如果您在程序早期完成所有swizzling,则可能不会有任何明显影响。
编译器无法对方法调用进行优化,因为Objective-C允许任何方法被覆盖,甚至在运行时(如使用swizzling)。因此,无论是否使用它,您已经支付了swizzling的性能代价。