2016-06-09 73 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

相關問題