[RxSwift] 2. Disposables


RxSWIFT 21日間のプログラムを学ぶ
「Rxに挑戦する新開発者」スタート🚀

Disposables


観測可能に伝達されるイベントはonNext,onCompleted,onErrorである.
"🏋🏻‍♀️「たとえば、観測可能なリリースのコードを作成して購読します.
この時に伝わる活動によって、それぞれ印刷文を撮らせます.

onDisposed

// Observable 생성과 구독
Observable<String>.create { observer in
    observer.onNext("🏋🏻‍♀️")
    //observer.onCompleted()
    observer.onError(Err.error)
    return Disposables.create()
}.subscribe(
    onNext: { print("Next",$0) },
    onError: { print("Error",$0) },
    onCompleted: { print("Completed") },
    onDisposed: { print("Disposed") }
).disposed(by: disposeBag)

/*
 output :
 (case onComplete)
 Next 🏋🏻‍♀️
 Completed
 Disposed
 (case onError)
 Next 🏋🏻‍♀️
 Error error
 Disposed
 */
コードリンク全体を羽状バニラで表示できます.👩🏻‍💻 転送されたコードに加えて、Error Enumの定義、またはdisposeBagを宣言したコードも含まれます.
出力からonDisposedでDisposeが出力となる.
処理を表す処理から,onDisposedイベントはある処理時に呼び出されるイベントであることが分かる.
onDispostedは、Observableに関連するすべてのリソースが無効になっていると直感的に呼び出されます.
しかし、Observerableが解放するイベントはonNext、onCompleted、onErrorの3種類である.すなわち、ObservableがonCompletedまたはonErrorで終了すると、リソースは自動的に閉じられます.
この部分では、個人的にはViewControllerのライフサイクルを考えました.ViewControllerのライフサイクルを使用すると、特定の時点で関数を上書きして必要なタスクを追加できます.これと同様に、処理が必要な作業があればonDisposedアクティビティを利用できます.
ここで重要なのは、リソースが自動的に解放されるが、メモリ漏洩の問題が発生する可能性があるため、disposeを呼び出すことを推奨することです.

DisposeBag()


サブスクライバが多すぎると、多くのサブスクライバがdisposeを実行し、管理が効率的ではありません.
したがって、DisposeBagを利用して効率的に管理することができる.

DisposeBagのまとめです.
理解した内容から,DisposeBagは処分性を有し,その処分性が割当てを解除しようとするたびにdisposeを呼び出す.

DisposeBagの作成と読み込み


先生がlet disposeBag = DisposeBag()になったら、そのまま.disposed(by: disposeBag)に入れておけばいいです.
次回はテーマをまとめてみましょう