RXSwift 之 Subject

最近在学习RXSwift,会做一些笔记。如果有错误的地方,望指正。

  • 关于Subject 是干什么的?
    在RXSwift中,号称“万物皆可序列”。 Subject的一个作用就是作为序列,
    它还可以作为观察者,监听事务的变化。

  • 江南5大才子-- subject的分类:
    PublistSubject
    只会订阅在subscribe之后的改变。

BehaviorSubject

  1. 初始化的时候会设置一个默认值。
  2. 在 subscribe之前会默认保留最后一次改变,之后一切正常。如果再次subscribe,则也会保留最后一次改变。
  3. 默认在BehaviorSubject里面留有一个 element属性,用来保存值。

ReplaceSubject :
功能与BehaviorSubject类似。不同在于可以自定义保存值的个数。

AsycnSubject:
功能与BehaviorSubject类似。不同在于当调用Error后会清空所有的值。

BehaviorRelay:

  1. 保留最后一个值
  2. 采用behavior.accept 录入值。

Subject的实际使用

  1. TableView 里面使用BehaviorSubject。
    初始化数据,在改变model的方法里面执行OnNext,进行subscribe刷新。
  2. 值的反向传递。
    A 到 B界面,修改数据后传回A。-- 类似于block的使用。
    a. 详情申明一个PublishSubject,用于监听model的变化。当有值被修改时, 调用OnNext发送信号。
    b. A 控制器在进入B时,调用B的subject.subscribe ,监听model的变化。
    c. 注意:A只需要调用subscribe,不能调用OnNext。权限分开。

你可能感兴趣的:(RXSwift 之 Subject)