RxSwift技术路线与参考资料
## RxSwift简介响应式编程
响应式编程(Reactive Programming)是一种通过异步和数据流来构建事务关系的编程思想。核心体现就是观察者和可被观察者,通过构造操作数据序列,然后再对这些序列作出响应。
响应式编程框架
在Objective-C语言中,也流行着响应式编程框架ReactiveCocoa
而在Swift语言中,最受欢迎的应该是ReativeX社区的RxSwift
RxSwift知识图
详细参考RxSwift知识图xmind
RxSwift 热信号与冷信号
热信号
- 热信号在订阅期间不会产生任何副作用,但是它确实存在自己的上下文,这些事件都是在自己的上下文环境中生成的,并且RxSwift并不能控制它(也就是说,它在自己的线程中运行)
- 热信号可以随时发送元素,如果观察者在其开始发送元素之后才开始订阅,那么会错过先前发送的所有元素
冷信号
- 冷信号在其他观察者订阅之前是不会生成任何元素的。这意味着它在订阅之前是没有自己的上下文环境的,当订阅发生之后,它会创建某个上下文环境并且开始生成元素
- 冷信号只有在有观察者进行订阅之后才发送元素
冷热信号的区分可以简化成一个简单的问题:在订阅的时候是否存在副作用?
是否存在副作用可以转换成,副作用是否是共享的?
如果副作用只是在订阅之后才执行的,那么这个副作用就是不共享的;
反之,这个副作用就是共享的
冷热信号的对比
热信号:
- 无论是否存在订阅者都会使用资源
- 无论是否存在订阅者都会生成元素
- 主要跟BehaviorSubject这类状态类型一起使用
冷信号:
- 只有在订阅生成之后才消耗资源
- 只有有订阅者的时候才会生成元素
- 主要用于异步操作,比如网络请求
RxSwift参考资料
RxSwift库github开源地址:https://github.com/ReactiveX/RxSwift 文档
基本概念与理解
ReactiveX官网: http://reactivex.io 跨语言的响应式编程社区,支持一种异步响应式编程思想,不同语言版本。
语法参考与手册
RxSwift 中文文档:全面介绍RxSwift, 响应式编程概念,RxSwift核心概念,操作符选择,生态和常用框架【推荐作为手册查询】
Swift-RxSwift使用-航哥:通过实例来介绍RxSwift的使用,包含基本介绍,常用操作符,其他框架配合使用【简单而全面】
RxSwift Reatctive 编程
RxSwift Reactive Programming with Swift 书籍及源码
RxSwift社区
RxSwift社区聚合了生态学习资源和文档等开源代码指南社区,包含以下模块:
- 包含RxSwift一些抽象工具库,比如RxDataSource, RxCoordinator, Action, RxSwiftExt, ReactorKit等
- 其他库的扩展支持,比如RxRealm, RxAlamofire, RxWebKit等
- 提供RxSwift支持的库,比如 Moya
- 使用RxSwift编写的开源应用,比如MVVM-RouterDemo, Papr(MVVM+Coordinator), Simple MVVM Login Example
RxSwift练习项目
前往RxSwift社区找到Apps Built with RxSwift约有15款开源应用