ReactiveCocoa 5.0 初窺:可能是最痛的一次升級(jí)

RAC 5.0 相比于 4.0 有了巨大的變化眉尸,不僅是受 swift 3.0 大升級(jí)的影響坦弟,RAC 對(duì)自身項(xiàng)目結(jié)構(gòu)的也進(jìn)行了大幅度的調(diào)整。這個(gè)調(diào)整就是將 RAC 拆分為四個(gè)庫(kù):ReactiveCocoa驹闰、ReactiveSwift芹关、ReactiveObjC、ReactiveObjCBridge行瑞。

ReactiveCocoa

現(xiàn)在的 RAC 注意力主要集中在 Swift 和 UI 層上奸腺,將原來(lái)一個(gè)基于 RAC 面向 UI 層的擴(kuò)展庫(kù) Rex 合并進(jìn)了 RAC 。

RAC 3 和 4 的主要精力在圍繞 Swift 重新打造一個(gè)響應(yīng)式編程庫(kù)血久。因?yàn)檫@部分的核心 API 已經(jīng)很成熟突照,所以現(xiàn)在將重心放在為 AppKit 和 UIKit 提供一些更好用的擴(kuò)展上。

ReactiveSwift

原來(lái) RAC 中只和 Swift 平臺(tái)相關(guān)的核心代碼被單獨(dú)抽取成了一個(gè)新框架:ReactiveSwift 氧吐。

Swift 正在快速成長(zhǎng)并且成長(zhǎng)為一個(gè)跨平臺(tái)的語(yǔ)言讹蘑。把只和 Swift 相關(guān)的代碼抽取出來(lái)后,ReactiveSwift 就可以在其他平臺(tái)上被使用筑舅,而不只是局限在 CocoaTouch 和 Cocoa 中座慰。

ReactiveObjC

在 RAC 3 和 4 中,RAC 也包含了 RAC 2 中的 OC 代碼〈浼穑現(xiàn)在這部分代碼被移到了 ReactiveObjC 版仔。

這樣做的原因是因?yàn)閮蓚€(gè)庫(kù)雖然有著一樣的核心編程范式,實(shí)際上卻是完全獨(dú)立的兩套 API 误墓。實(shí)際的使用中蛮粮,RAC 4 和 RAC 2 是完全不同的兩組用戶群,并且維護(hù)的團(tuán)隊(duì)其實(shí)也是兩組谜慌。之前混在一個(gè)庫(kù)里也增加了管理的復(fù)雜度然想。拆分出去后也可以更加自由的維護(hù) ReactiveObjC 。

ReactiveObjCBridge

在把 Swift 和 OC 的庫(kù)拆分之后問(wèn)題來(lái)了畦娄,并不是所有的庫(kù)都是純 OC 和 Swift 的又沾。有相當(dāng)大一部分項(xiàng)目處于 OC 遷移到 Swift 過(guò)程中,其中可能使用 Swift 調(diào)用了 RAC 2 中基于 OC 寫的 API熙卡。為了解決這部分用戶的問(wèn)題杖刷,所以有了 ReactiveObjCBridge

在項(xiàng)目里現(xiàn)在到底要引入哪些

如果你只是純 swift 項(xiàng)目驳癌,你繼續(xù)使用 ReactiveCocoa 滑燃。但是 RAC 依賴于 ReactiveSwift ,等于你引入了兩個(gè)庫(kù)颓鲜。

如果你的項(xiàng)目是純 OC 項(xiàng)目表窘,你需要使用的是 ReactiveObjC 典予。這個(gè)庫(kù)里面包含原來(lái) RAC 2 的全部代碼。

如果你的項(xiàng)目是 swift 和 OC 混編乐严,你需要同時(shí)引用 ReactiveCocoa 和 ReactiveObjCBridge 瘤袖。但是 ReactiveObjCBridge 依賴于 ReactiveObjC ,所以你就等于引入了 4 個(gè)庫(kù)昂验。

API 重新命名??

這部分的給我的感覺(jué)就是會(huì)呼吸的痛捂敌。很多 API 需要重新找一遍,而且命名也變了既琴。

一個(gè)方向是參照 RxSwift 采用了reactive 的命名空間占婉。比如:

let appearing = view.reactive.trigger(for: #selector(viewWillAppear(_:)))

let producer = object.reactive.values(forKeyPath: #keyPath(key))

API 都放在了 reactive 后。不再是原先的 rac_xx 甫恩。

還有一部分與 UI 相關(guān)的屬性命名也改了逆济,可能是受 rex 的影響。比如:

// 原來(lái)是 rac_text
viewModel.searchString <~ textField.reactive.textValues

button.reactive.pressed = CocoaAction(viewModel.commit)

還增加了生命周期 lifetime 的屬性磺箕。比如:

signal.take(during: object.reactive.lifetime)

當(dāng) object 被回收的時(shí)候信號(hào)也停止獲取 value 奖慌。

最后

讓我們一起笑著活下去??。

歡迎關(guān)注我的微博:@沒(méi)故事的卓同學(xué)


相關(guān)鏈接:
RAC change log

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末滞磺,一起剝皮案震驚了整個(gè)濱河市升薯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌击困,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阅茶,死亡現(xiàn)場(chǎng)離奇詭異蛛枚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)脸哀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)溉贿,“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了皿曲?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵妈倔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我虑绵,道長(zhǎng)翅睛,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任法挨,我火速辦了婚禮幅聘,結(jié)果婚禮上惫企,老公的妹妹穿的比我還像新娘页畦。我一直安慰自己,他們只是感情好端朵,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布邻薯。 她就那樣靜靜地躺著乘凸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上进鸠,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音绍傲,去河邊找鬼。 笑死荠耽,一個(gè)胖子當(dāng)著我的面吹牛倘屹,可吹牛的內(nèi)容都是我干的拍谐。 我是一名探鬼主播气嫁,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼庶香,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼感猛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤庭再,失蹤者是張志新(化名)和其女友劉穎恨搓,沒(méi)想到半個(gè)月后弄抬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弛槐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年懊亡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乎串。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡店枣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叹誉,到底是詐尸還是另有隱情艰争,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布桂对,位于F島的核電站甩卓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蕉斜。R本人自食惡果不足惜逾柿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一缀棍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧机错,春花似錦爬范、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至萧诫,卻和暖如春斥难,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帘饶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工哑诊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人及刻。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓镀裤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缴饭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暑劝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • RAC 5.0 相比于 4.0 有了巨大的變化,不僅是受 swift 3.0 大升級(jí)的影響颗搂,RAC 對(duì)自身項(xiàng)目結(jié)構(gòu)...
    Bonucci閱讀 209評(píng)論 1 0
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)铃岔、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,024評(píng)論 4 62
  • 轉(zhuǎn)載自:https://github.com/Tim9Liu9/TimLiu-iOS 目錄 UI下拉刷新模糊效果A...
    袁俊亮技術(shù)博客閱讀 11,909評(píng)論 9 105
  • 找個(gè)時(shí)間 和老同學(xué)一面 不為別的 只想一起懷念過(guò)往的歲月 就如同看到彼此青春的模樣 一切都是自然而然的 沒(méi)有過(guò)多的...
    鳶尾花謝閱讀 130評(píng)論 0 0
  • 月光下峭火,美麗的月亮變成圓形,月光透出熱鬧的場(chǎng)景智嚷。 “玖月卖丸,嫁給我吧≌档溃”穿著一塵不染的西裝稍浆,男人捧著一束鮮艷的百合花...
    擁抱我靜閱讀 310評(píng)論 0 1