乐趣区

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

退出移动版