NSProxy、NSInvocation、NSMethodSignature

什么是NSProxy:

NSProxy是一个抽象的基类,是根类,与NSObject类似

NSProxy和NSObject都实现了协议

提供了消息转发的通用接口

如何使用NSProxy来转发消息?

1.我先设置一个类 WeakProxy, 继承自 NSProxy

2.为 WeakProxy 设置一个 NSObject 属性

3.自定义一个转换方法,相当于给 NSObject 属性赋值

4.然后通过这个属性获得调用方法的方法签名

methodSignatureForSelector:

5.为调用设置目标

forwardInvocation:

NSInvocation、NSMethodSignature

NSMethodSignature: 方法的签名,可获取传来selector的参数和返回值。
NSInvocation : 用来存储和转发消息,可以利用NSInvocation调用任意SEL甚至block。

在 iOS中可以直接调用某个对象的消息方式有两种:

  • performSelector:withObject;
  • NSInvocation。

参考链接:
https://www.jianshu.com/p/177e44a411db
https://www.jianshu.com/p/da96980648b6

你可能感兴趣的:(NSProxy、NSInvocation、NSMethodSignature)