谁应该在 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) 中的主要内容,如果未能解决你的问题,请参考以下文章

ViewController 中的 RxSwift DisposeBag 使用

在 iOS 上,对于 MVVM 中的 DisposeBag,可以放在 ViewModel 中吗?

在 iOS 上将 Google Analytics 与 Swift 结合使用

在 Swift 上将所有手势从 UIView 转换为 UIScrollView

Swift - 如何在 Firebase 上将排序查询创建为降序?

如何在swift 3上将UITableViewController的背景颜色更改为渐变色