RxSwift是什么
RxSwif是ReactiveX的Swift版本,也就是一個函數(shù)式響應(yīng)編程的框架。對,就這一句話。想要知道他做什么的,我們先來了解一下觀察者模式。
觀察者模式
觀察者模式(Observer),定義了對象間的一種一對多的組合關(guān)系,以便一個對象的狀態(tài)發(fā)生變化時,所有依賴于它的對象都得到通知并自動刷新。完美的將觀察者和被觀察的對象分離開。舉個例子,用戶界面可以作為一個觀察者,業(yè)務(wù)數(shù)據(jù)是被觀察者,用戶界面觀察業(yè)務(wù)數(shù)據(jù)的變化,發(fā)現(xiàn)數(shù)據(jù)變化后,就顯示在界面上。
RxSwift做了什么
RxSwift把我們程序中每一個操作都看成一個事件,比如一個TextField中的文本改變,一個按鈕被點擊,或者一個網(wǎng)絡(luò)請求結(jié)束等,每一個事件源就可以看成一個管道,也就是sequence,比如TextField,當(dāng)我們改變里面的文本的時候,這個TextField就會不斷的發(fā)出事件,從他的這個sequence中不斷的流出,我們只需要監(jiān)聽這個sequence,每流出一個事件就做相應(yīng)的處理。同理,Button也是一個sequence,每點擊一次就流出一個事件。
Observable和Observer
Observable是被觀察者,Observer是觀察者。Observer(觀察者)訂閱(subscribe)Observable(被觀察者),觀察者就會受到被觀察者發(fā)出的通知事件。
DisposeBag
DisposeBag其實就相當(dāng)于iOS中的ARC,會在適當(dāng)?shù)臅r候銷毀觀察者,相當(dāng)于內(nèi)存管理者吧。
subscribe
subscribe是訂閱sequence發(fā)出的事件,比如next事件,error事件等。而subscribe(onNext:)是監(jiān)聽sequence發(fā)出的next事件中的element進行處理,他會忽略error和completed事件。相對應(yīng)的還有subscribe(onError:) 和 subscribe(onCompleted:)