[RxSwift] 2. Disposables
RxSWIFT 21日間のプログラムを学ぶ
「Rxに挑戦する新開発者」スタート🚀
Disposables
「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)
に入れておけばいいです.
次回はテーマをまとめてみましょう
Reference
この問題について([RxSwift] 2. Disposables), 我々は、より多くの情報をここで見つけました
https://velog.io/@iammiori/RxSwift-2.-Disposables
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// 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
*/
Reference
この問題について([RxSwift] 2. Disposables), 我々は、より多くの情報をここで見つけました https://velog.io/@iammiori/RxSwift-2.-Disposablesテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol