nsproxy
2020-04-18 本文已影响0人
不如养花
NSProxy
抽象基类
重写- (void)forwardInvocation:(NSInvocation *)invocation;和- (nullable NSMethodSignature *)methodSignatureForSelector:(SEL)sel方法,来转发它没实现的方法。
把消息转发给真正的target的代理类
应用:
1.解除nstimer的循环引用
2.多继承
3.消息分发
(多继承就是在proxy中保存那两个对象,判断下调用的是哪个类,然后让其分别调用各自的方法)
(消息分发是把类保存在自定义proxy中字典中,用运行时获得该类的方法,并存入字典,在调用时去判断是哪个类的方法)
NSProxy
NSInvocation
用来包装方法和对应的对象,它可以存储方法的名称,对应的对象,对应的参数
应用: 可以多参数调用
NSInvocation
NSMethodSignature
用于获取某个类的类方法或者实例方法参数的个数和方法的返回值
所以使用时要正确传入该类。
NSMethodSignature