RxSwift(三)探索RxSwift核心逻辑之创建序列
RxSwift(四)探索RxSwift核心逻辑之订阅序列
RxSwift(五)探索RxSwift核心逻辑之发送信号及总结
前言
Talk is cheap, show me the code!
探索过程
-
老规矩,还是点击进入源代码
image -
来到了ObserverType里的onNext函数,当我再想进入里面的源码时,发现有很多个选择,一个个选当然不靠谱咯,很简单的事,加个断点,看看self的类型
image
-
断点看到了self的类型是
imageRxSwift.AnyObserver<String>
,所以找AnyObserver的on方法进去看看
-
看到这里发现很熟悉,这不就是在上篇文章里探索到的吗?所以刚才的
imageobserver.on
调用的就是AnonymousObservableSink.on
!!!
-
然后去找到
imageAnonymousObservableSink.on
,调用的是这里的self.forwardOn
-
然后找到是
imageself._observer.on
, 调用的是AnonymousObservableSink._observer.on
-
在上一篇文章探索订阅序列的时候,然后沿着这个路径往回找这个observer,然后发现在这个observer就是一开始就创建的
imageAnonymousObserver
-
所以其实
imageAnonymousObservableSink._observer.on
调用的就是AnonymousObserver.on
,然后这个on方法其实就是遵循的ObserverType
协议里的on方法, 在ObserverBase里找到这个on方法,.next这些都是调用了onCore
方法
-
然后这里保存了
imageeventHandler
的事件代码块,onCore
是执行这个事件代码块
-
然后这个eventHandler是哪里调用的呢?不就是我们创建序列时传递进去的吗?正好回到了创建序列的起点,
imagevalue = "这是新号"
-
这时回到外面,豁然开朗, 第三步发送信号后走到了 订阅序列的闭包里,所以能打印出
image
订阅到:这是信号
, 源码解析到这里,就基本掌握了RxSwift的核心逻辑了。一路探索下来,真的很神奇!!希望看到这篇文章的人也能跟着探索一遍,探索完真的很爽!!!
RxSwift核心逻辑图解
image总结
- RxSwift很神奇,万物皆序列
- RxSwift的函数响应式编程思想令人惊叹,下沉式操作体现了函数式,用sink来封装一些开发者不关心的逻辑,便于使用
- 响应式的体现就是这个事件流了,订阅一次竟然能实现只要接收到响应就能源源不断的接收到信号,一直响应,从未停止
网友评论