簡(jiǎn)介
如今,函數(shù)響應(yīng)式編程成為越來(lái)越受開(kāi)發(fā)者喜歡的編程方法。原因很簡(jiǎn)單鹰晨,它能使復(fù)雜的異步代碼容易地編寫(xiě)和理解绿淋,以及 MVVM 設(shè)計(jì)模式的興起闷畸。目前的兩個(gè) iOS 最流行的函數(shù)響應(yīng)式編程庫(kù)分別是 ReactiveCocoa 與 RxSwift。
ReactiveCocoa
ReactiveCocoa 是一個(gè)比較老的開(kāi)源項(xiàng)目吞滞,從 Objective-C 時(shí)期開(kāi)始佑菩,后來(lái)從 3.0 開(kāi)始支持了 Swift (可以通過(guò) bridge 在 Objective-C 下使用),接著就完全停止了在 Objective-C 上的維護(hù)冯吓,到了 5.0 更是將 RAC 拆分為四個(gè)庫(kù):ReactiveCocoa倘待、ReactiveSwift、ReactiveObjC组贺、ReactiveObjCBridge凸舵,用于區(qū)分 Objective-C 和 Swift 開(kāi)發(fā)。之前我總結(jié)過(guò)一篇 ReactiveCocoa 入門(mén) 的文章失尖,里面簡(jiǎn)單介紹了下 ReactiveCocoa 的組織框架啊奄,這里就不詳細(xì)介紹了渐苏。
推薦閱讀匯總:干貨集結(jié)地
RxSwift
RxSwift 項(xiàng)目的時(shí)間短一些意乓,但是 ReactiveX 社區(qū)充滿(mǎn)了活力防嗡。關(guān)于 RxSwift 有一件重要的事是項(xiàng)目是按照 ReactiveX 這個(gè)組織的規(guī)定下開(kāi)發(fā)的,并且所有其他語(yǔ)言的 Rx 項(xiàng)目也是一樣蜓萄。如果學(xué)會(huì)了如何使用 RxSwift庄新,再去學(xué)習(xí) Rx.Net , RxJava 或者 RxJS 等就是小菜一碟鞠眉,只是語(yǔ)言語(yǔ)法上的差異≡裾【PS:這個(gè)思想一致通用是我十分喜歡的一點(diǎn)械蹋,哈哈哈】
強(qiáng)烈推薦 RxSwift 學(xué)習(xí)文章(我就是看了下面的文章入門(mén)的):
ReacticeCocoa Vs RxSwift
1. 冷信號(hào)和熱信號(hào)
冷信號(hào):(例如網(wǎng)絡(luò)請(qǐng)求)
- 是被動(dòng)的,只有當(dāng)你訂閱的時(shí)候羞芍,它才會(huì)發(fā)布消息
- 只能一對(duì)一哗戈,當(dāng)有不同的訂閱者,消息是重新完整發(fā)送荷科。
熱信號(hào):(例如 UI 交互)
- 是主動(dòng)的唯咬,盡管你并沒(méi)有訂閱事件,但是它會(huì)時(shí)刻推送畏浆,
- 可以有多個(gè)訂閱者胆胰,是一對(duì)多,集合可以與訂閱者共享信息全度。
ReactiveCocoa 對(duì)冷信號(hào)和熱信號(hào)的區(qū)別是很看重的煮剧,而 RxSwift 則不需要考慮是冷信號(hào)還是熱信號(hào)。
關(guān)于冷熱信號(hào)的更加細(xì)節(jié)的介紹将鸵,可以看以下文章:
- 細(xì)說(shuō)ReactiveCocoa的冷信號(hào)與熱信號(hào)(一)什么是冷信號(hào)與熱信號(hào)
- 細(xì)說(shuō)ReactiveCocoa的冷信號(hào)與熱信號(hào)(二)為什么要區(qū)分冷信號(hào)與熱信號(hào)
- 細(xì)說(shuō)ReactiveCocoa的冷信號(hào)與熱信號(hào)(三)怎么處理冷信號(hào)與熱信號(hào)
2. 社區(qū)支持
相對(duì)于 RxSwift 背后的 ReactiveX 大社區(qū)的活躍支持勉盅,ReactiveCocoa 的社區(qū)支持明顯是不足的,更多的是網(wǎng)上多年累月積累的在線教程顶掉,在社區(qū)支持方面 RxSwift 是有很大優(yōu)勢(shì)的草娜。
3. 總結(jié)
實(shí)際上2個(gè)框架還有很多細(xì)節(jié)差異,但不管是 RxSwift 還是 ReactiveCocoa 框架痒筒,都是功能極其強(qiáng)大的框架宰闰,而且很多東西是相通的,在兩者之間來(lái)回切換只是幾個(gè)小時(shí)的問(wèn)題簿透。如果你之前學(xué)習(xí)過(guò) Swift 移袍,我個(gè)人推薦是從 RxSwift 入手,如果是只學(xué)習(xí)過(guò) Objective-C 的話老充,還是從 ReactiveCocoa 入手好點(diǎn)葡盗。【PS: 我個(gè)人是偏愛(ài) RxSwift 一點(diǎn)的啡浊,O(∩_∩)O哈哈~】