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】:当它获得deinit
ed 时,dispose bag 将调用它所持有的所有一次性用品。您的视图控制器可能没有超出范围,或者您希望它在该点之前处理对象。
【讨论】:
以上是关于RxSwift:disposed(by: disposeBag) 真的有效吗?的主要内容,如果未能解决你的问题,请参考以下文章
6. RxSwift 订阅操作过滤1 mapbufferfilter