gpt4 book ai didi

objective-c - NSProxy 与 NSObject

转载 作者:太空狗 更新时间:2023-10-30 03:15:07 26 4
gpt4 key购买 nike

我使用方法调配将所有方法调用包装在一个具有一些额外功能的类中。具体来说,我是:

  • 检查此方法调用所需的对象是否在缓存中
  • 如果缓存中有该对象,则将其返回。
  • 如果没有,分派(dispatch)到原始实现,填充缓存并返回。

对于每种方法,我都会重新路由到建议的方法。并使用 + (BOOL)resolveInstanceMethod:(SEL)sel 和 IMP_implementationWithBlock 实现新方法。

它工作得很好,但代码读起来不太好。看起来 NSProxy 将提供一种更简洁的方法来实现此功能。

但还有另一种选择,就是简单地让 NSObject 子类替代并拦截目标对象方法周围的方法调用。通过覆盖 forwardInvocation 和 methodSignatureForSelector,我可以获得所需的结果。

那么 NSProxy 给我带来了什么?为什么我应该改用这个?

最佳答案

NSProxy 的要点是它没有实现大多数方法。这是确保 Objective-C 转发机制被调用的必要条件。如果你从 NSObject 开始,有很多方法会直接被调度,你没有机会转发它们。

关于objective-c - NSProxy 与 NSObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18284724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com