ReactiveCocoa的rac_signalForSelector实现原理
作者:互联网
ReactiveCocoa可以給一个方法的调用添加绑定,或者说是观察者。
rac_signalForSelector:fromProtocol:(绑定协议的方法)
rac_signalForSelector:(绑定类的方法)
原理:
- 在当前类中设置关联属性,value:RACSubject
- 将传入selector的方法的实现设置成_objc_msgForward(目的是让这个方法调用走方法的转发流程)
- 为当前类重写或添加respondsToSelector:方法,检查关联属性是否存在,存在:返回YES,方法转发进入下一步
- 为当前类重写或添加methodSignatureForSelector:方法,构建方法签名
- 为当前类重写或添加forwardInvocation:方法,1):检查方法可以调用,执行方法的invoke;2):获取类的关联属性,执行RACSubject的sendNext,将invocation中的方法参数封装到RACTuple中,作为sendNext参数。
之所以让所有的方法调用统一走方法转发流程,目的就是可以方便的在invocation对象中获取方法的参数。
标签:调用,rac,重写,添加,ReactiveCocoa,方法,signalForSelector 来源: https://www.cnblogs.com/zbblog/p/12540628.html