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

标签 ios swift mvvm rx-swift

我是 RxSwift 的新手,在这里我想问一个关于 DisposeBag 应该在哪里的问题。

我的情况是,我已经检索到在 tableview 中显示的项目列表,并且每个项目都有自己的标志来指示它是否被选中。

所以我不只是将结果列表绑定(bind)到 tableview。当用户通过表格 View 导航时,我需要一些逻辑来编辑本地列表。

我创建了一个实例 Variable([Item])ViewModel但如果我将逻辑放在 ViewModel一个 DisposeBag是需要的。

谷歌搜索后,大多数 MVVM+RxSwift 的示例都有 Variable 的实例放置DisposeBagViewModel但有人说应该只放在ViewController .真的吗?如何收听 ObservableViewModel这样我的业务逻辑就可以放在ViewModel ?

最佳答案

一个 DisposeBag除非有充分的理由,否则通常不应将其放置在 ViewModel 中。

一般一个DisposeBag旨在将订阅绑定(bind)到其所有者。 ViewModel 通常不会创建任何订阅,而只是提供 Observables 以便消费者可以订阅它们(例如 ViewController)。

这意味着 ViewController 是通常持有 DisposeBag 的 Controller 。 ,因为它通常使用订阅(而不是 ViewModel 本身)。

关于ios - 在 iOS 上,对于 MVVM 中的 DisposeBag,可以放在 ViewModel 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50382711/

相关文章:

ios - Xcode 6 Beta 5 swift Playground : Cannot find symbol for CGRectMake()

macos - 如何使用 indexOf 获取所选 NSCollectionView 的索引?

android - 如何在 View 模型中将 ImageView 与可绘制数据绑定(bind)?

c# - 多个包装器 - 如何做?

iphone - 如何获得最友好的用户体验?

ios - 如何在 tvos 应用程序中将焦点移动到 CollectionView 单元格中的按钮上?

ios - Swift Firebase UIRefreshControl 创建重复的帖子

ios - UIScrollView 中的 UIWebView 在不降低分辨率的情况下缩放

ios - 将 Swift 框架集成到 objective-c 应用程序

c# - 将 UserControl 命令绑定(bind)到 MainWindow WPF/MVVM