2016-06-09 74 views
7

我们创建了DisposeBagObservable,订阅Observable,然后addDisposableTo(disposeBag),我知道DisposeBag何时会退出,它会调用dispose()来释放资源,否则会导致内存泄漏。当我们应该在RxSwift中调用addDisposableTo(disposeBag)时?

如果Observable发送CompleteError终止于有限时间。当Observable终止DisposeBag之前终止,我是否需要拨打addDisposableTo(disposeBag)DisposeBag是否在收到终止消息时自动释放订阅该消息的观察者?

let disposeBag = DisposeBag() 

Observable.just("") 
    .subscribe { event in 
     print(event) 
    } 
    .addDisposableTo(disposeBag) 

我应该明确地去.addDisposableTo(disposeBag)吗?我想在发送“”之后,Observable将终止并释放观察者?

回答

7

如果你确信在确定的方式可观察到的完成 - 就像您例如使用just,或使用taketakeUntil等 - ,你可以选择不使用DisposeBag。

您可能会收到编译器警告,它实际上很好地解释了这种行为以及如何解决此问题。但总的来说,如果您仍然使用DisposeBag,它将更具前瞻性。

参见:Unused disposable warning

0

处置袋用于返回ARC像行为RX。 DisposeBag被释放后,它会调用每个添加的一次性处理器。

它用于处理您在闭包中传递的旧引用以及不再需要的资源(以及显然未使用的资源):例如打开的HTTP连接,数据库连接或缓存。

所以,如果我们有任何可以留下的资源,你应该叫它。

更多在this article

相关问题