forwardInvocation vs class_addMethod

时间:2013-04-09 01:13:27

标签: objective-c cocoa-touch

在我的实现中,我可以选择使用class_addMethod在运行时创建新方法,或者我可以依赖forwardInvocation / NSProxy。如果两种方法都可用作解决方案,您希望采用哪种方式,以及如何确定?

2 个答案:

答案 0 :(得分:0)

我更喜欢class_addMethod

  1. 因为它比forwardInvocation快得多(搜索方法列表,尝试使用forwardTarget,创建NSInvocation,这实际上是解决选择器的最后一次尝试)
  2. 更清楚的是添加新方法而不是在一个地方处理所有动态方法调用。

答案 1 :(得分:0)

class_addMethod是最佳选择。 因为它可以使用方法搜索缓存来改进查找匹配方法地址。

  

参考文献:BOOK" Effective Objective-C 2.0"第12期