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里面去
self._observer.on
,而_observer正式初始化sink时传过来的参数,也就是之前的AnonymousObserver
也就可以走到它的闭包从而完成回调