其他分享
首页 > 其他分享> > ReactiveCocoa的rac_signalForSelector实现原理

ReactiveCocoa的rac_signalForSelector实现原理

作者:互联网

ReactiveCocoa可以給一个方法的调用添加绑定,或者说是观察者。

rac_signalForSelector:fromProtocol:(绑定协议的方法)

rac_signalForSelector:(绑定类的方法)

原理:

  1. 在当前类中设置关联属性,value:RACSubject
  2. 将传入selector的方法的实现设置成_objc_msgForward(目的是让这个方法调用走方法的转发流程)
  3. 为当前类重写或添加respondsToSelector:方法,检查关联属性是否存在,存在:返回YES,方法转发进入下一步
  4. 为当前类重写或添加methodSignatureForSelector:方法,构建方法签名
  5. 为当前类重写或添加forwardInvocation:方法,1):检查方法可以调用,执行方法的invoke;2):获取类的关联属性,执行RACSubject的sendNext,将invocation中的方法参数封装到RACTuple中,作为sendNext参数。

之所以让所有的方法调用统一走方法转发流程,目的就是可以方便的在invocation对象中获取方法的参数。

 

标签:调用,rac,重写,添加,ReactiveCocoa,方法,signalForSelector
来源: https://www.cnblogs.com/zbblog/p/12540628.html