一积仗、Rx 介紹
1疆拘,什么是 Rx?
-
Rx
是ReactiveX
的縮寫,簡單來說就是基于異步Event
(事件)序列的響應(yīng)式編程寂曹。 -
Rx
可以簡化異步編程方法哎迄,并提供更優(yōu)雅的數(shù)據(jù)綁定。讓我們可以時刻響應(yīng)新的數(shù)據(jù)同時順序地處理它們隆圆。
2漱挚,Rx 庫
-
Rx
本身可以說是一種跨平臺的標(biāo)準(zhǔn),它有自己的社區(qū)論壇匾灶,不管是web
還是移動開發(fā)棱烂,都能用Rx
的思維和方法來完成你的工作。 - 作為一種跨平臺標(biāo)準(zhǔn)阶女,目前已經(jīng)有許多基于不同開發(fā)語言的
Rx
的庫颊糜。除了我后面會著重介紹的RxSwift
之外哩治,還有RxJava, RxJS, RxKotlin, Rx.NET...
等等。 - 這些
Rx
庫雖然用的語言不同衬鱼,但它們之間其實都是相通的业筏,都有相同的API
。所以說如果以后你使用別的語言做其他的方面的開發(fā)鸟赫,同樣是可以使用相同的思維甚至相同的方法接口(除了語言不同)來編程蒜胖。
3,Rx 主頁
- 如果想了解整個
Rx
大家庭的成員抛蚤,可以訪問它的主頁 - 在這里我們可以看到所有支持的語言台谢,以及平臺:
二、RxSwift 介紹
1岁经,RxSwift 的作用
(1)在編寫代碼時我們經(jīng)常會需要檢測某些值的變化(比如:textFiled
輸入值的變化朋沮、數(shù)據(jù)請求完成或失敗的變化),然后進(jìn)行相應(yīng)的處理缀壤。
- 過去針對不同的情況樊拓,我們需要采用不同的事件傳遞方法去處理,比如:
delegate
塘慕、notifinotion
筋夏、target-action
、KVO
等等图呢。 - 而
RectiveX
機制(由RxSwift
實現(xiàn))的出現(xiàn)条篷,讓程序里的事件傳遞響應(yīng)方法做到統(tǒng)一。將之前那些常用的事件傳遞方法(比如:delegate
岳瞭、notification
拥娄、target-action
等等),全部替換成Rx
的“信號鏈”方式瞳筏。
(2)如果我們平時使用的是 MVVM
開發(fā)模式的話稚瘾,通過RxSwift
可以獲得更加方便的數(shù)據(jù)綁定的方法,使得 MVVM
開發(fā)更加如虎添翼姚炕。
2摊欠、RxSwift 的安裝與配置
(1)手動
(1)從 GitHub 上下載最新的代碼
(2)將下載下來的源碼包中 Rx.xcodeproj
拖拽至你的工程中
(3)工程 -> General
-> Embedded Binaries
項,把 iOS 版的 RxSwift.framework
柱宦、RxCocoa.framework
添加進(jìn)來
(2)CocoaPods
pod --version: 1.3.1
已通過測試”
# Podfile
use_frameworks!
target 'YOUR_TARGET_NAME' do
pod 'RxSwift', '~> 4.0'
pod 'RxCocoa', '~> 4.0'
end
# RxTests 和 RxBlocking 將在單元/集成測試中起到重要作用
target 'YOUR_TESTING_TARGET' do
pod 'RxBlocking', '~> 4.0'
pod 'RxTest', '~> 4.0'
end”
替換 YOUR_TARGET_NAME
然后在 Podfile
目錄下, 終端輸入:
$ pod install
(3)Carthage
carthage version: 0.26.2
已通過測試
添加到Cartfile
github "ReactiveX/RxSwift" ~> 4.0
$ carthage update
最后些椒,在需要使用 RxSwift 的地方 import 進(jìn)來就可以了
import RxSwift
import RxCocoa
3、RxSwift 與 RxCocoa
前面配置的時候掸刊,我們會在 Swift
項目中引入 RxSwift
免糕、RxCocoa
這兩個庫,他們的作用分別是:
- RxSwift:它只是基于
Swift
語言的Rx
標(biāo)準(zhǔn)實現(xiàn)接口庫,所以RxSwift
里不包含任何Cocoa
或者UI
方面的類石窑。 - RxCocoa:是基于
RxSwift
針對于iOS
開發(fā)的一個庫牌芋,它通過Extension
的方法給原生的比如UI
控件添加了Rx
的特性,使得我們更容易訂閱和響應(yīng)這些控件的事件松逊。