Moa*_*ouz 3 swift rx-swift rx-cocoa
现在,我需要基于配置API更改应用程序主题(颜色),因此我正在使用RxCocoa,RxSwift框架在每个视图控制器上创建可观察的对象,以在应用程序上应用新主题。
我的问题是使用DisposeBag的最佳实践是什么:
提前致谢
DisposeBag在 ViewController 中定义将有助于管理相关的生命周期Disposable
这是一个简单的示例,在 ViewController 中,对 API 请求(用于 UI 相关数据)的订阅由Dispoablein持有DisposeBag。当 ViewController 解除分配时,关联DisposeBag将处置其所有Disposables.
那时,如果 API Request 仍处于待处理状态,URLSessionTask.cancel则会调用以避免不必要的转发(假设 observable 构造良好)。
使用传统的回调闭包来实现这种行为是非常复杂的。
处理袋的全部目的是在破坏时处理其包含的可观察物。一个全球性的袋子永远不会被破坏,反而破坏了它的目的。这等于完全忽略了一次性用品。
只要您知道可观察到的对象将在有限的时间内错误/完成,就可以忽略它们,因为无论如何链条都是在那个时间放置的。例如,如果您使用它,take(x)那么您实际上并不需要一次性物品,因为链条将在发出规定数量的物品后完成并被处理掉。
同样,有趣的是,订阅按钮轻按时不需要它,因为轻击Observable将完成并在按钮取消初始化后进行处理。我怀疑其他UI元素的工作方式相同。
基本上,袋子是作为故障保护设备存在的(我在回答这个问题时学到了一些东西。谢谢。)
| 归档时间: |
|
| 查看次数: |
2209 次 |
| 最近记录: |