RxSwift掃盲
作為iOS開發(fā)者,或許你沒聽說過RxSwift,但是一定聽說過函數(shù)式編程[Functional Programming]、響應(yīng)式編程[Reactive Programming]镀娶、函數(shù)響應(yīng)式編程[Functional Reactive Programming];
見名知意,RxSwift 是在 Apple 推出 Swift 后掠剑,針對 Swift 語言 ReactiveX 推出 Reactive Extensions 系列一個實現(xiàn)庫;除此之外,ReactiveX 還推出了 RxJava轨域,RxAndroid凛虽,RxPHP 等蘊含類似思想的框架庄新。
為什么要學(xué)習(xí)RxSwift?
我們知道 C 語言的面向過程,Objective-C隅茎、C++ 面向?qū)ο缶幊? Java 的 Spring 框架提出了面向切面編程的思想,學(xué)習(xí) RxSwift 不是學(xué)習(xí)如何使用第三方庫澄峰,而是學(xué)習(xí)一種編程思想--函數(shù)響應(yīng)式編程;
Why use RxSwift?
A vast majority of the code we write involves responding to external events. When a user manipulates a control, we need to write an @IBAction handler to respond. We need to observe notifications to detect when the keyboard changes position. We must provide closures to execute when URL sessions respond with data. And we use KVO to detect changes to variables. All of these various systems makes our code needlessly complex. Wouldn't it be better if there was one consistent system that handled all of our call/response code? Rx is such a system.
RxSwift is the official implementation of Reactive Extensions (aka Rx), which exist for most major languages and platforms.
翻譯:
我們編寫的絕大多數(shù)代碼涉及對外部事件的響應(yīng)。當(dāng)一個用戶操作控制辟犀,我們需要寫一個@IBAction處理器響應(yīng)俏竞。當(dāng)鍵盤改變位置時,我們需要觀察通知來檢測堂竟。當(dāng)URL會話響應(yīng)數(shù)據(jù)時魂毁,必須提供閉包來執(zhí)行。我們使用KVO的變化來檢測變量出嘹。所有這些不同的系統(tǒng)使我們的代碼不必要的復(fù)雜席楚。如果有一個一致的系統(tǒng)處理我們所有的呼叫/響應(yīng)代碼,這不是更好嗎税稼?Rx就是這樣一個系統(tǒng)烦秩。
RxSwift是官方實現(xiàn)的Reactive擴展正(又名Rx),存在的最主要的語言和平臺娶聘。
why use RxSwift?
視頻講解RxSwift使用 RxSwift 進(jìn)行響應(yīng)式編程
RxSwift的優(yōu)點
- Composable 可組合闻镶,在設(shè)計模式中有一種模式叫做組合模式,你可以方便的用不同的組合實現(xiàn)不同的類
- Reusable 代碼可重用丸升,原因很簡單铆农,對應(yīng)RxSwift,就是一堆Obserable
- Declarative 響應(yīng)式的狡耻,因為狀態(tài)不可變墩剖,只有數(shù)據(jù)變化
- Understandable and concise 簡潔,容易理解夷狰。
- Stable 穩(wěn)定岭皂,因為RxSwift寫出的代碼,單元測試時分方便
- Less stateful “無”狀態(tài)性沼头,因為對于響應(yīng)式編程爷绘,你的應(yīng)用程序就是一堆數(shù)據(jù)流
- Without leaks 沒有泄漏,因為資源管理非常簡單
GitHub約一萬個Star
響應(yīng)式編程:ReactiveCocoa vs RxSwift 選誰好?
RAC是一個已經(jīng)有著3年歷史的項目进倍,從Objective-C時期開始土至,后來從3.0開始支持了swift(可以通過bridge在OC下使用),接著就完全停止了在Objective-C上的維護(hù)猾昆。RxSwift項目的時間短一些只有幾個月(作者寫的時間是15年)陶因,但是社區(qū)似乎充滿了動力。關(guān)于RxSwift有一件重要的事是項目是按照 ReactiveX這個組織的規(guī)定下開發(fā)的垂蜗,并且所有其他語言的Rx項目也是一樣楷扬。如果學(xué)會了如何使用RxSwift解幽,再去學(xué)習(xí)Rx.Net, RxJava 或者 RxJS就是小菜一碟,只是語言語法上的差異烘苹。這真的就是learn once, apply everywhere.
知乎上某人的回答
如果項目中有oc,就用ReactiveCocoa躲株;
要是用沒有,就用RxSwift咯
參考文章
RxSwift 介紹
一頭扎進(jìn) RxSwift
RxSwift文檔的中文翻譯
RxSwift使用教程