今日から書籍「比較して学ぶRxSwift入門」を元に、学習開始!学んだことを記録していきます!気になった方はぜひ書籍を手に取ってみてくださいね!
リアクティブプログラミングとは?
時間と共に変化する値と振る舞いの関係を宣言的に記述するプログラミング手法。
・・・と言われてもわかりませんよね?
こちら書籍でExcelを用いた例があり、それを見れば理解しやすいかと思います!
簡潔にいうと、A+B=Cという式があった際に、AもしくはBの値が変化した場合に、Cも変化するよ!的なプログラミングってことですね。
RxSwiftの導入について
CocoaPodsを用いる場合、以下の通りです。
- ターミナルにて、導入したいプロジェクトのディレクトリへ移動
- コマンド「pod init」を実行 > Podfileが生成される
- 「Podfile」を開き、「pod 'RxSwift'」「pod 'RxCocoa'」を追記し保存(バージョンは指定しない)
- コマンド「pod install」を実行
Observable(監視可能な?)とは?
イベントを検知するためのクラス。ストリームとも言われる。
Obsarvable:イベント発生元(.tapなど)
Obsarver:イベント処理(onNextなどの中身)
通知するイベントの種類
- onNext:デフォルトのイベントを返す。値を格納でき、何度でも呼び出し可能
- onError:エラーイベント。1度だけ。購読(?)破棄
- onCompleted:完了イベント。1度だけ。購読(?)破棄
Disposeについて
購読(?)を破棄し、メモリリークを回避するためのもの。
SubjectとRelayとは?
Observableのイベント検知 + イベントの発生ができる
以下の4種類が存在
- PublishSbject
- BehaviorSubject
- PublishRelay
- BehaviorRelay
Relayに流せるイベントは、onNext のみ。(逆を言えばエラーがないことの保証となる)
Publishはバッファを持たず、Behaviorはバッファを持つ。
(subscribe時に一つ過去のイベントを受け取流ことができ、
最初にsubscribeするときには宣言時に設定した初期値を受け取る)
subscribeとは:購読する、約束するという意味。
使い分け
- Subject:通信処理やDB処理など、エラー発生時に処理を分けたいとき。
- Relay:UIに値をBindする。(onErrorやonCompletedが発生すると、購読が止まる(その先のタップや入力イベントを拾えなくなる)ため。
bindとは?
RxSwiftでは、単方向のデータバインディング。
subscribeする場合は処理を記述するが、bindすることでよりコードが簡潔になる。
Operatorとは?
Observableに対し、イベントの変換(mapなど)・絞り込み(filterなど)などの加工を施して、新たにObservableを生成する仕組み。