谁应该在 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