MENU

【RxSwift】BehaviorRelayとPublishRelay

目次

1. BehaviorRelayとPublishRelayの特徴

  • BehaviorRelayとPublishRelaは.nextメソッドのみ流せる
  • .errorと.completedが流れない
  • .nextメソッドを流すには.accept()を使用する

2. BehaviorRelayとPublishRelayの違い

BehaviorRelayPublishRelay
初期値の有無
valueプロパティの有無
現在値流しの有無
var disposeBag = DisposeBag()
let behaviorRelay = BehaviorRelay<Int>(value: 1)

behaviorRelay.subscribe { event in
    print(event)
}.disposed(by: disposeBag)

behaviorRelay.accept(2)
bahaviorRelay.accept(3)

// 実行結果
// next(1)
// next(2)
// next(3)
var disposeBag = DisposeBag()
let behaviorRelay = PublishRelay<Int>()

behaviorRelay.subscribe { event in
    print(event)
}.disposed(by: disposeBag)

behaviorRelay.accept(2)
bahaviorRelay.accept(3)

// 実行結果
// next(2)
// next(3)

補足:現在値流しの有無

var disposeBag = DisposeBag()
let behaviorRelay = BehaviorRelay<Int>(value: 1)

behaviorRelay.subscribe { event in
    print(event)
}.disposed(by: disposeBag
// ここまで書いただけで初期値value=1が流れる
// 実行結果
// behaviorRelay next(1)

3. おわりに

本記事を最後まで読んでいただきありがとうございました!
RxSwift、combine、SwiftUIなど目まぐるしく変わるiOSのトレンドですが、頑張って食らいつきましょ

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Rio@iOSエンジニアのアバター Rio@iOSエンジニア 経営者兼モバイルアプリエンジニア

都内のモバイルアプリ開発会社経営者。
モバイルアプリの新規の請負開発及び保守運用を引き受ける。
Denso→Honda→現在
#RxSwift #MVVM #Firebase #Python3

コメント

コメントする

目次