ios - 在 iOS 上,对于 MVVM 中的 DisposeBag,可以放在 ViewModel 中吗?
问题描述
我是 RxSwift 的新手,在这里我想问一个关于 DisposeBag 应该在哪里的问题。
我的情况是,我已经检索到在 tableview 中显示的项目列表,并且每个项目都有自己的标志来指示它是否被选中。
所以我不只是将结果列表绑定到 tableview。当用户通过表格视图导航时,我需要一些逻辑来编辑本地列表。
我已经在中创建了一个实例Variable([Item])
,ViewModel
但是如果我将逻辑放在ViewModel
aDisposeBag
中是需要的。
在谷歌搜索之后,大多数 MVVM+RxSwift 的示例都有Variable
放置DisposeBag
in的实例,ViewModel
但有些人说它应该只放在ViewController
. 真的吗?我怎样才能听Observable
进去ViewModel
以便我的业务逻辑可以放入ViewModel
?
解决方案
除非有充分的理由,否则DisposeBag
通常不应将A放置在 ViewModel 中。
通常, aDisposeBag
旨在将订阅与其所有者联系起来。ViewModel 通常不会创建任何订阅,而只是提供 Observables 以便消费者可以订阅它们(例如 ViewController)。
这意味着 ViewController 是通常持有 的那个DisposeBag
,因为它通常是使用订阅的那个(而不是 ViewModel 本身)。
推荐阅读
- c++ - 如何在 VS Code 中轻松编译和运行 C++ 代码?
- wordpress - 用于更改滑块层上的文本的简码
- java - LibGdx MapObjects 在有效的瓷砖地图上为空
- python - 如何使用 Python 在进程中注入 tkinter gui
- python - 在numpy中给定两个向量计算平行四边形的面积
- python - Mypy 无法识别类装饰器
- java - Spring Cloud 负载均衡和 Feign 客户端
- mysql - FastAPI-mysql 码头工人。mysql return (2003, "Can't connect to MySQL server on '127.0.0.1')
- android - CoroutineExceptionHandler 不适用于 ViewModelScope 和 Koin
- r - 如何在 Mac 上编辑 MeCab 词典?