swift开发利器-RxSwift
一、为什么要使用RxSwift?
因为使用RxSwift框架我们可以使target-action、代理、闭包回调、通知、多个任务之间的依赖、等待多个并发任务完成之后处理结果等等的编程场景变得逻辑清晰、易读、易维护。
RxSwift的优点:
- 复合 - Rx就是复合的代名词。
- 复用 - 因为它易复合。
- 清晰 - 因为声明都是不可变更。
- 易用 - 因为它是抽象了的异步编程,使我们统一了代码风格。
- 稳定 - 因为Rx是完全通过单元测试的。
二、函数响应式编程
什么是函数式编程?
函数式编程是种编程范式。它需要我们将函数作为参数传递,或者作为返回值返回。我们可以通过组合不同的函数来得到想要的结果。
函数式编程的优点:
- 灵活
- 高复用
- 简洁
- 易维护
- 适应各种需求变化
什么是函数响应式编程?
函数响应式编程是种编程范式。它是通过构建函数操作数据序列,然后对这些序列作出响应的编程方式。它结合了函数式编程和响应式编程。
数据绑定
在RxSwift里有一个比较重要的概念就是数据绑定(订阅)。就是指将可监听序列绑定到观察者上。
三、RxSwift核心
RxSwift的核心组成如下:
- Observable 产生事件
- Observer 响应事件
- Operator 创建变化组合事件(操作符)
- Disposable 管理绑定(订阅)的生命周期
- Schedulers 线程调配队列
3.1 可监听序列
所有的事物都是序列。
序列的类型如下:
- Single: 要么只能发出一个事件,要么产生一个error事件。
- Completable: 要么产生一个completed事件,要么产生一个error事件。
- Maybe:发出一个元素或者一个 completed 事件或者一个 error 事件。
- Driver:1.)不会产生error事件 2.)一定在MainScheduler监听(主线程监听)3.)共享附加作用
- Signal: 和driver类似。
- ControlEvent:1.)不会产生error事件 2.)一定在mainScheduler订阅 3.) 一定在manScheduler监听 4.)共享附加作用
driver和signal的区别:Driver会重新发送上一个元素,Signal不会。状态序列选Driver类型,事件序列选Signal类型。
3.2 observer
响应事件的都是观察者。
观察者类型:
- AnyObserver:任意观察者。
- Binder:确保在给定scheduler上执行(默认mainScheduler),一般由于UI操作。
3.3 既是可监听序列也是观察者
- AsyncSubject:发出最后一个元素或完成事件。
- PublishSubject:对观察者发送订阅后产生的元素。
- ReplaySubject:对观察者发送全部的元素。
- BehaviorSubject: 将源 Observable 中最新的元素发送出来,然后发送新元素。
- ControlProperty: 专门用于描述 UI 控件属性。
3.4 Schedulers(线程调配队列)
- MainScheduler:代表主线程。如果你需要执行一些和 UI 相关的任务,就需要切换到该 Scheduler 运行。
- SerialDispatchQueueScheduler:抽象了串行 DispatchQueue。如果你需要执行一些串行任务,可以切换到这个 Scheduler 运行。
- ConcurrentDispatchQueueScheduler:抽象了并行 DispatchQueue。如果你需要执行一些并发任务,可以切换到这个 Scheduler 运行。
- OperationQueueScheduler: 抽象了 NSOperationQueue。它具备 NSOperationQueue 的一些特点,例如,你可以通过设置 maxConcurrentOperationCount,来控制同时执行并发任务的最大数量。
3.5 operator(操作符)
RxSwift的操作符有很多种,具体见下图。
总结
本文主要对为什么要使用RxSwift框架?RxSwift的核心组成,与及RxSwift的操作符进行了整理。
文章主要内容来源于RxSwift