什么是NSProxy:
NSProxy是一个抽象的基类,是根类,与NSObject类似
NSProxy和NSObject都实现了<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
网友评论