RxSwift-搞事情(一)
上次说到RxSwift的核心逻辑,发现有些东西并没想象中简单,这次再来补充一哈。
搞事情(一)我们说到sink初始化保存了observer,最终程序走到了sink.run,也就是管子的run方法,parent._subscribeHandler(AnyObserver(self))
,参数self就是AnonymousObservableSink
,parent
就是AnonymousObservable
,然后我们来看AnyObserver(sink)。
AnyObserver
AnyObserver是一个结构体,并继承ObserverType协议
,初始化会给自己的属性observer赋值,也就是observer.on
,参数observer其实就是传过来的AnonymousObservableSink
,所以会到sink.on里面去
![](https://img.haomeiwen.com/i5616715/a076fc749dd76b35.png)
![](https://img.haomeiwen.com/i5616715/3c197f9e0871c0c3.png)
self._observer.on
,而_observer正式初始化sink时传过来的参数,也就是之前的AnonymousObserver
也就可以走到它的闭包从而完成回调
![](https://img.haomeiwen.com/i5616715/dda5e946f26a4f5d.png)
网友评论