DelegateProxy是对 ios中delegate的封装,能够将delegate的方法调用转换为一个observable sequence。先来看几张图。
从文档上的这个图可以看出:我们的DelegateProxy充当的是一个中间转换角色。uiscrollview的delegate设置为delegateProxy。然后有两种情况:
- delegateProxy实现了delegate的方法,那么直接在对应方法里on event
|
|
- 如果delegateProxy没有实现对应的方法,那么就会触发NSObject的forwardInvocation来将message转发。所以在_RxDelegateProxy中重载了这个方法。
|
|
_sentMessage和_methodInvoked方法都是从一个[Selector:PublishSubject]的字典中查找对应的subject,找到后调用on方法。
|
|
那selector又是什么时候加入到了sentMessageForSelector中的呢?
|
|
了解了个大概,还是从具体的例子开始:
|
|
|
|
可以看到在实现didEndDecelerating时,拿到subject后执行了map操作,这样我们subscribe时的event里面就什么信息也没有,如果我们想event里包含参数信息,那么我们可以去掉map操作。
|
|