目标-C方法交换的性能问题

8

在使用Objective-C的方法交换时,会有哪些性能惩罚?

使用消息交换会破坏哪些编译器优化(如果有)?


7
这个问题不能产生基于观点的答案。了解编译器的人可以用事实回答它。@pjs等人,请停止追求积分。 - Tudor Luca
4
我也想知道这个问题的答案。 - Andra Todorescu
1个回答

5

Swizzling使Objective-C运行时刷新其方法缓存。如果您在程序早期完成所有swizzling,则可能不会有任何明显影响。

编译器无法对方法调用进行优化,因为Objective-C允许任何方法被覆盖,甚至在运行时(如使用swizzling)。因此,无论是否使用它,您已经支付了swizzling的性能代价。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接