1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

俺的RxSwiftまとめ④(disposebagとは?)

Last updated at Posted at 2020-10-25

この記事は、俺的RxSwiftまとめ①,俺的RxSwiftまとめ②,俺的RxSwiftまとめ③(Observableとは何か?)の続きです。

始め方はsubscribe/終わらせ方はdispose bag

Observableの特徴として、「3つのイベント(next/error/completed)を持ち、subscribeすることでそれらの要素を取り扱えるようになる」というものがあった。
始め方はsubscribeがあるが、終わらせ方はどのようにすれば良いのか?それは、下記の3通りが考えられる。

  • errorイベントが流れてくる
  • completedイベントが流れてくる
  • disposebag(ゴミ袋)にobservarbleを追加する

今回は、3番目のdispose bagについて詳しく記す。

disposebagとは何なのか?

observableをまとめて破棄するためのゴミ袋

なぜ必要なのか?

observableの中には、completederrorを流したくないものがある(ex:〇〇)。その場合は、observableに備わっているdisposeメソッドを用いて、明示的にobservableを完了させる(≒廃棄する)必要がある。(完了させないと、永遠にsubscribe状態になり、メモリリークの原因となってしまうため。)

その際、observable個別にdisposeメソッドを使う代わりに、管理コストを抑えるためにobservableをまとめて入れるdisposebagをインスタンスのプロパティとして持たせておいて、インスタンス破棄のタイミングで全てのobservabledisposeすることができる(ViewControllerのプロパティとして持たせるパターンをよく見かける)

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?