RxSwiftのコールド備忘録1


はじめに

RxSwiftのHot・Coldについてなかなか覚えられないので、アウトプットして覚えていくことにしました。
備忘録としてなので、あまり参考にならないかと思います。悪しからず。

RxSwiftにおけるHot・Coldとは?

RxSwiftにおけるObservableにはHot/Coldという性質があります。

Hot

subscribeしなくてもストリームが流れ出る。いわゆる垂れ流し状態。

Cold

subscribeしないとストリームが流れない。手動操作(subscribeが必要)の状態。

Coldの簡単な例

これは何が出力されるでしょうか?

let observable = Observable.of(1,2,3,4,5,6,7)
                  .map { value in
                     print(value)
                  }

パッと見ですと 1,2,3,4,5,6,7が出力されそうですが、

実はこれは何も流れません。
mapを含め、ほとんどのオペレータはコールドなので、subscribeするまでストリームは流れません。

observable
     .subscribe(onNext: { value in
           print(value)
     })
     .disposed(by: disposeBag)

subscribeすることでストリームは流れます。

当たり前ですが、とても重要なのでまずはColdについての備忘録でした。
Hotについてはまたの機会に。