RxSwift-搞事情(二)

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里面去

image.png
通过event判断走.next .error .completed ,以.next为例,会继续走到forwardOn
image.png
接着会走到forwardOn里面的self._observer.on,而_observer正式初始化sink时传过来的参数,也就是之前的AnonymousObserver也就可以走到它的闭包从而完成回调
image.png

你可能感兴趣的:(RxSwift-搞事情(二))