簡介
如今,函式響應式程式設計成為越來越受開發者喜歡的程式設計方法。原因很簡單,它能使複雜的非同步程式碼容易地編寫和理解,以及 MVVM 設計模式的興起。目前的兩個 iOS 最流行的函式響應式程式設計庫分別是 ReactiveCocoa 與 RxSwift。
ReactiveCocoa
ReactiveCocoa 是一個比較老的開源專案,從 Objective-C 時期開始,後來從 3.0 開始支援了 Swift (可以通過 bridge 在 Objective-C 下使用),接著就完全停止了在 Objective-C 上的維護,到了 5.0 更是將 RAC 拆分為四個庫:ReactiveCocoa、ReactiveSwift、ReactiveObjC、ReactiveObjCBridge,用於區分 Objective-C 和 Swift 開發。之前我總結過一篇 ReactiveCocoa 入門 的文章,裡面簡單介紹了下 ReactiveCocoa 的組織框架,這裡就不詳細介紹了。
推薦閱讀彙總:乾貨集結地
RxSwift
RxSwift 專案的時間短一些,但是 ReactiveX 社群充滿了活力。關於 RxSwift 有一件重要的事是專案是按照 ReactiveX 這個組織的規定下開發的,並且所有其他語言的 Rx 專案也是一樣。如果學會了如何使用 RxSwift,再去學習 Rx.Net , RxJava 或者 RxJS 等就是小菜一碟,只是語言語法上的差異。【PS:這個思想一致通用是我十分喜歡的一點,哈哈哈】
強烈推薦 RxSwift 學習文章(我就是看了下面的文章入門的):
ReacticeCocoa Vs RxSwift
1. 冷訊號和熱訊號
冷訊號:(例如網路請求)
- 是被動的,只有當你訂閱的時候,它才會釋出訊息
- 只能一對一,當有不同的訂閱者,訊息是重新完整傳送。
熱訊號:(例如 UI 互動)
- 是主動的,儘管你並沒有訂閱事件,但是它會時刻推送,
- 可以有多個訂閱者,是一對多,集合可以與訂閱者共享資訊。
ReactiveCocoa 對冷訊號和熱訊號的區別是很看重的,而 RxSwift 則不需要考慮是冷訊號還是熱訊號。
關於冷熱訊號的更加細節的介紹,可以看以下文章:
- 細說ReactiveCocoa的冷訊號與熱訊號(一)什麼是冷訊號與熱訊號
- 細說ReactiveCocoa的冷訊號與熱訊號(二)為什麼要區分冷訊號與熱訊號
- 細說ReactiveCocoa的冷訊號與熱訊號(三)怎麼處理冷訊號與熱訊號
2. 社群支援
相對於 RxSwift 背後的 ReactiveX 大社群的活躍支援,ReactiveCocoa 的社群支援明顯是不足的,更多的是網上多年累月積累的線上教程,在社群支援方面 RxSwift 是有很大優勢的。
3. 總結
實際上2個框架還有很多細節差異,但不管是 RxSwift 還是 ReactiveCocoa 框架,都是功能極其強大的框架,而且很多東西是相通的,在兩者之間來回切換隻是幾個小時的問題。如果你之前學習過 Swift ,我個人推薦是從 RxSwift 入手,如果是隻學習過 Objective-C 的話,還是從 ReactiveCocoa 入手好點。【PS: 我個人是偏愛 RxSwift 一點的,O(∩_∩)O哈哈~】