谁应该在 Swift 上将 DisposeBag 保留在 MVVM(+controller) 中

Posted

技术标签:

【中文标题】谁应该在 Swift 上将 DisposeBag 保留在 MVVM(+controller) 中【英文标题】:Who should keep DisposeBag in MVVM(+controller) on swift 【发布时间】:2017-11-09 13:18:11 【问题描述】:

我尝试使用 RxSwift + MVVM 架构开发 ios 应用程序。 我有个问题。谁应该拥有 DisposeBag 实例? 现在,我在我的代码中实现如下。

视图模型有一个“变量”实例。 控制器保留 DisposeBag。 View 订阅 view model 的 observable 并附加控制器的 dispose bag。

设计好不好? 我想有代码标准,请给我你的意见。

【问题讨论】:

【参考方案1】:

DisposeBag 必须是副作用发生的地方。副作用不应该发生在您的视图模型中,它应该只是将输入转换为输出。因此 DisposeBag 应该在 View Controller 中。

【讨论】:

但是我们应该把视图控制器的处理包转移到视图模型吗? 没有。如果设计得当,视图模型不需要处理包。 Disposables 是在订阅时生成的,并且订阅都在视图控制器中,而不是视图模型中。

以上是关于谁应该在 Swift 上将 DisposeBag 保留在 MVVM(+controller) 中的主要内容,如果未能解决你的问题,请参考以下文章