RxSwift 中的 PublishSubject 和 PublishRelay 有什么区别?

Emt*_*Ali 10 reactive-programming rx-swift

我是 RxSwift 编程的新手。编码时我对两者感到困惑。应该使用哪一个来存储表的数据源以及如何决定?

Dan*_* T. 10

  • PublishSubject 可以发出错误或已完成事件,而 PublishRelay 则不能。
  • PublishSubject 符合 ObserverType 协议,而 PublishRelay 不符合。

@RobMayoff 在他的评论中提到的另一个重要点。PublishSubject 和 PublishRelay 都不存储状态,因此它们都不是“存储表的数据源”的好主意。

幸运的是,您不需要自己存储状态,因为items操作员创建的 DataSource 对象在内部存储它。

换句话说,您不需要使用主题或中继(任何类型的)来提供表格视图。只需使用一个 Observable。