我是 RxSwift 的新手,在这里我想问一个关于 DisposeBag 应该在哪里的问题。
我的情况是,我已经检索到在 tableview 中显示的项目列表,并且每个项目都有自己的标志来指示它是否被选中。
所以我不只是将结果列表绑定(bind)到 tableview。当用户通过表格 View 导航时,我需要一些逻辑来编辑本地列表。
我创建了一个实例 Variable([Item])
在 ViewModel
但如果我将逻辑放在 ViewModel
一个 DisposeBag
是需要的。
谷歌搜索后,大多数 MVVM+RxSwift 的示例都有 Variable
的实例放置DisposeBag
在 ViewModel
但有人说应该只放在ViewController
.真的吗?如何收听 Observable
在 ViewModel
这样我的业务逻辑就可以放在ViewModel
?
最佳答案
一个 DisposeBag
除非有充分的理由,否则通常不应将其放置在 ViewModel 中。
一般一个DisposeBag
旨在将订阅绑定(bind)到其所有者。 ViewModel 通常不会创建任何订阅,而只是提供 Observables 以便消费者可以订阅它们(例如 ViewController)。
这意味着 ViewController 是通常持有 DisposeBag
的 Controller 。 ,因为它通常使用订阅(而不是 ViewModel 本身)。
关于ios - 在 iOS 上,对于 MVVM 中的 DisposeBag,可以放在 ViewModel 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50382711/