現在,函數響應式編程成爲愈來愈受開發者喜歡的編程方法。緣由很簡單,它能使複雜的異步代碼容易地編寫和理解,以及 MVVM 設計模式的興起。目前的兩個 iOS 最流行的函數響應式編程庫分別是 ReactiveCocoa 與 RxSwift。html
ReactiveCocoa 是一個比較老的開源項目,從 Objective-C 時期開始,後來從 3.0 開始支持了 Swift (能夠經過 bridge 在 Objective-C 下使用),接着就徹底中止了在 Objective-C 上的維護,到了 5.0 更是將 RAC 拆分爲四個庫:ReactiveCocoa、ReactiveSwift、ReactiveObjC、ReactiveObjCBridge,用於區分 Objective-C 和 Swift 開發。以前我總結過一篇 ReactiveCocoa 入門 的文章,裏面簡單介紹了下 ReactiveCocoa 的組織框架,這裏就不詳細介紹了。react
推薦閱讀彙總:乾貨集結地git
RxSwift 項目的時間短一些,可是 ReactiveX 社區充滿了活力。關於 RxSwift 有一件重要的事是項目是按照 ReactiveX 這個組織的規定下開發的,而且全部其餘語言的 Rx 項目也是同樣。若是學會了如何使用 RxSwift,再去學習 Rx.Net , RxJava 或者 RxJS 等就是小菜一碟,只是語言語法上的差別。【PS:這個思想一致通用是我十分喜歡的一點,哈哈哈】github
強烈推薦 RxSwift 學習文章(我就是看了下面的文章入門的):編程
冷信號:(例如網絡請求)設計模式
- 是被動的,只有當你訂閱的時候,它纔會發佈消息
- 只能一對一,當有不一樣的訂閱者,消息是從新完整發送。
熱信號:(例如 UI 交互)網絡
- 是主動的,儘管你並無訂閱事件,可是它會時刻推送,
- 能夠有多個訂閱者,是一對多,集合能夠與訂閱者共享信息。
ReactiveCocoa 對冷信號和熱信號的區別是很看重的,而 RxSwift 則不須要考慮是冷信號仍是熱信號。框架
關於冷熱信號的更加細節的介紹,能夠看如下文章:異步
相對於 RxSwift 背後的 ReactiveX 大社區的活躍支持,ReactiveCocoa 的社區支持明顯是不足的,更多的是網上多年累月積累的在線教程,在社區支持方面 RxSwift 是有很大優點的。函數
實際上2個框架還有不少細節差別,但無論是 RxSwift 仍是 ReactiveCocoa 框架,都是功能極其強大的框架,並且不少東西是相通的,在二者之間來回切換隻是幾個小時的問題。若是你以前學習過 Swift ,我我的推薦是從 RxSwift 入手,若是是隻學習過 Objective-C 的話,仍是從 ReactiveCocoa 入手好點。【PS: 我我的是偏心 RxSwift 一點的,O(∩_∩)O哈哈~】