RxSwift 01 ReactiveCocoa 與 RxSwift

執著丶執念發表於2018-06-02

RxSwift 01   ReactiveCocoa 與 RxSwift

簡介

如今,函式響應式程式設計成為越來越受開發者喜歡的程式設計方法。原因很簡單,它能使複雜的非同步程式碼容易地編寫和理解,以及 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 則不需要考慮是冷訊號還是熱訊號。

關於冷熱訊號的更加細節的介紹,可以看以下文章:

2. 社群支援

相對於 RxSwift 背後的 ReactiveX 大社群的活躍支援,ReactiveCocoa 的社群支援明顯是不足的,更多的是網上多年累月積累的線上教程,在社群支援方面 RxSwift 是有很大優勢的。

3. 總結

實際上2個框架還有很多細節差異,但不管是 RxSwift 還是 ReactiveCocoa 框架,都是功能極其強大的框架,而且很多東西是相通的,在兩者之間來回切換隻是幾個小時的問題。如果你之前學習過 Swift ,我個人推薦是從 RxSwift 入手,如果是隻學習過 Objective-C 的話,還是從 ReactiveCocoa 入手好點。【PS: 我個人是偏愛 RxSwift 一點的,O(∩_∩)O哈哈~】

相關文章