【发布时间】:2013-08-19 12:48:20
【问题描述】:
我使用方法调配将所有方法调用包装在一个具有一些额外功能的类中。具体来说,我是:
- 检查此方法调用所需的对象是否在缓存中
- 如果缓存中有该对象,则返回它。
- 如果没有,则分派到原始实现,填充缓存并将其返回。
对于每种方法,我都会重新路由到建议的方法。并使用 + (BOOL)resolveInstanceMethod:(SEL)sel 和 IMP_implementationWithBlock 实现新方法。
它运行良好,但代码读起来不太好。似乎 NSProxy 将提供一种更简洁的方式来实现此功能。
但还有另一种选择,就是简单地使用一个 NSObject 子类替代并拦截目标对象方法周围的方法调用。通过覆盖 forwardInvocation 和 methodSignatureForSelector,我可以获得所需的结果。
那么 NSProxy 给了我什么?我为什么要改用这个?
【问题讨论】:
标签: objective-c objective-c-runtime