RAC 5.0 相比于 4.0 有了巨大的變化,不僅是受 swift 3.0 大升級的影響,RAC 對自身項目結(jié)構(gòu)的也進行了大幅度的調(diào)整。這個調(diào)整就是將 RAC 拆分為四個庫:ReactiveCocoa、ReactiveSwift、ReactiveObjC、ReactiveObjCBridge。這樣的大改變,對于我們使用來說,還是方便的,只是pod框架的方式不一樣而已。
ReactiveCocoa
現(xiàn)在的 RAC 注意力主要集中在 Swift 和 UI 層上,將原來一個基于 RAC 面向 UI 層的擴展庫 Rex 合并進了 RAC 。
RAC 3 和 4 的主要精力在圍繞 Swift 重新打造一個響應(yīng)式編程庫。因為這部分的核心 API 已經(jīng)很成熟,所以現(xiàn)在將重心放在為 AppKit 和 UIKit 提供一些更好用的擴展上。
目前的ReactiveCocoa 5.0版本是純swift編寫的,導(dǎo)入pod 'ReactiveCocoa' 框架的同時,會自動將ReactiveSwift框架導(dǎo)入。
ReactiveSwift
原來 RAC 中只和 Swift 平臺相關(guān)的核心代碼被單獨抽取成了一個新框架:ReactiveSwift。
Swift 正在快速成長并且成長為一個跨平臺的語言。把只和 Swift 相關(guān)的代碼抽取出來后,ReactiveSwift 就可以在其他平臺上被使用,而不只是局限在 CocoaTouch 和 Cocoa 中。
ReactiveObjC
在 RAC 3 和 4 中,RAC 也包含了 RAC 2 中的 OC 代碼?,F(xiàn)在這部分代碼被移到了ReactiveObjC 。
這樣做的原因是因為兩個庫雖然有著一樣的核心編程范式,實際上卻是完全獨立的兩套 API 。實際的使用中,RAC 4 和 RAC 2 是完全不同的兩組用戶群,并且維護的團隊其實也是兩組。之前混在一個庫里也增加了管理的復(fù)雜度。拆分出去后也可以更加自由的維護 ReactiveObjC 。
注:ReactiveObjC是純OC代碼編寫的,如果你的項目是純OC的話,
直接pod 'ReactiveObjC'
ReactiveObjCBridge
在把 Swift 和 OC 的庫拆分之后問題來了,并不是所有的庫都是純 OC 和 Swift 的。有相當(dāng)大一部分項目處于 OC 遷移到 Swift 過程中,其中可能使用 Swift 調(diào)用了 RAC 2 中基于 OC 寫的 API。為了解決這部分用戶的問題,所以有了 ReactiveObjCBridge 。
注:他是OC跟Swift混編
那么在項目里現(xiàn)在到底要引入哪些框架呢
如果你只是純 swift 項目,你繼續(xù)使用 ReactiveCocoa 。但是 RAC 依賴于 ReactiveSwift ,等于你引入了兩個庫。
pod 'ReactiveCocoa'
如果你的項目是純 OC 項目,你需要使用的是 ReactiveObjC 。這個庫里面包含原來 RAC 2 的全部代碼。
pod 'ReactiveObjC'
如果你的項目是 swift 和 OC 混編,你需要同時引用 ReactiveCocoa 和 ReactiveObjCBridge 。但是 ReactiveObjCBridge 依賴于 ReactiveObjC ,所以你就等于引入了 4 個庫。
pod 'ReactiveCocoa'
pod 'ReactiveObjCBridge'
相關(guān)鏈接:RAC change log
結(jié)束語
到這里就結(jié)束了,如若不懂的話可以??留言,也可以加入群討論
喜歡的話 記得關(guān)注、收藏、點贊喲