RxSwift:disposed(by: disposeBag) 真的有效吗?

Posted

技术标签:

【中文标题】RxSwift:disposed(by: disposeBag) 真的有效吗?【英文标题】:RxSwift: Does disposed(by: disposeBag) actually work? 【发布时间】:2017-06-13 02:24:47 【问题描述】:

我注意到,在从入门部分 (https://github.com/ReactiveX/RxSwift/blob/master/Documentation/GettingStarted.md#debugging-memory-leaks) 运行 Rx 调试代码时,我的资源总量在订阅上使用弃置(by: disposeBag) 时没有减少。但是,如果我改为保留对订阅的引用并对其调用 dispose(),则资源总数会减少。

我使用disposed(by:) 是因为我认为这是完成同样事情的一种简单方法,尽管现在我不确定。我应该避免依赖这种方法来处理我的订阅吗?

注意:如果重要,我会在订阅的闭包中使用 [weak self]。

【问题讨论】:

【参考方案1】:

当它获得deinited 时,dispose bag 将调用它所持有的所有一次性用品。您的视图控制器可能没有超出范围,或者您希望它在该点之前处理对象。

【讨论】:

以上是关于RxSwift:disposed(by: disposeBag) 真的有效吗?的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift 使用 RxCocoa 绑定到动画

6. RxSwift 订阅操作过滤1 mapbufferfilter

RxSwift 仅在添加新元素时观察数组变化

RxSwift之深入解析map操作符的底层实现

RxSwift之UI控件UISwitch与UISegmentedControl扩展的使用

IOS RxSwift中UISearch栏文本和视图模型属性之间的两种方式绑定