重讀-ReactiveCocoa

第一次接觸RAC是去年宴抚,差不多也是這個時候荸恕,當時就想總結(jié)一篇文章辟狈,但是當把用法全盤的了解一下之后心生感慨强霎。

什么玩意鸯两,這不就是一個厚重版的blockskit么坏瞄?

至于MVVM,網(wǎng)上的各種文章不斷的在強調(diào)甩卓,什么冗余的Controller、遺失的網(wǎng)絡(luò)邏輯蕉斜,那你把網(wǎng)絡(luò)請求單獨的抽成一個類不就行了么逾柿?

后來各種原因吧,加上無意中看到兩篇文章宅此,讓我感觸良多机错,懷著崇敬的心情重讀RAC。至于RAC+MVVM這種組合框架父腕,我現(xiàn)在的態(tài)度是:你可以不用弱匪,但是不能不會。


目錄

  • 引入面試題
  • 類名描述
  • 信號的生命周期及源碼解讀
  • RACCommand
一萧诫、面試題
question.png

面試官:為什么發(fā)送完要調(diào)用 [subscriber sendCompleted]

answer.png

二、RAC常用類
類名 描述
RACSignal 信號類(核心類)
RACSubject 可充當信號枝嘶,又能發(fā)送信號
RACSubscriber 信號訂閱者 (協(xié)議)
RACReplaySubject 重復(fù)提供信號類(繼承子RACSubject)
RACMulticastConnection 避免被多次訂閱
RACDisposable 取消訂閱
RACCompoundDisposable 類似于可變數(shù)組
RACCommand RAC中用于處理事件的類

三帘饶、信號的生命周期及源碼解讀
信號的生命周期.png
信號核心類.png
3.1、創(chuàng)建信號

本質(zhì):實例化RACDynamicSignal類型的信號群扶,并將傳入的block保存

RACSignal.png

RACDynamicSignal.png
3.2及刻、訂閱信號

本質(zhì):創(chuàng)建訂閱者,保存相應(yīng)block(等待發(fā)送時調(diào)用block)

訂閱信號-1.png
訂閱信號-2.png
3.3竞阐、發(fā)送信號

本質(zhì) : 執(zhí)行訂閱信號時傳入的block

發(fā)送信號.png

關(guān)于以上先將block拷貝缴饭,在《Effective Objective-C 2.0》中有這樣一段介紹:

block--copy.png

所以我們以后在用block的時候,最好也先copy一下骆莹。

3.4颗搂、取消訂閱

本質(zhì):把訂閱信號獲得的disposable進行dispost即可,在調(diào)度器調(diào)度該部分代碼之前禁止調(diào)用

3.5汪疮、其他信號類
其他信號.png
RACReplaySubject.png
RACMulticastConnection.png

四峭火、RACCommand

將這個類單獨弄寫一下是因為它比較重要,MVVM對于MVC來說最大的不同點就是把網(wǎng)絡(luò)請求抽離到ViewModel中了


RACCommand使用.png
4.1智嚷、RACCommand創(chuàng)建命令

本質(zhì):創(chuàng)建了一個RACCommand類的對象卖丸,保存block,初始化了一個信號數(shù)組盏道,用來接收信號命令

RACCommand-創(chuàng)建命令.png

4.2稍浆、RACCommand-訂閱命令發(fā)出信號

本質(zhì):訂閱保存到信號數(shù)組中的最新信號

訂閱命令發(fā)出的信號.png

4.3、RACCommand-判斷命令是否在執(zhí)行

本質(zhì):檢測是否有活躍的信號

RACCommand-判斷是否存在活躍信號.png

4.4、RACCommand-執(zhí)行命令

本質(zhì):將傳入的小對象傳入signalBlock生成signal衅枫,并將signal添加到_activeExecutionSignals信號數(shù)組中

RACCommand-執(zhí)行命令.png

4.5嫁艇、RACCommand在實際中的應(yīng)用

常見使用場景:網(wǎng)絡(luò)請求
這里我從網(wǎng)上扒了一個demo,具體實現(xiàn)如下

ViewModel網(wǎng)絡(luò)請求.png


五弦撩、RACSubject
5.1步咪、RACSubject解讀
RACSubject.png
RACSubject-創(chuàng)建信號.png
RACSubject-訂閱信號.png
RACSubject-發(fā)送信號.png
5.2、RACSubject的實際應(yīng)用

通常在RAC+MVVM架構(gòu)的項目中益楼,一般用RACSubject來代替代理猾漫。
演示:
自定義一個名字為DelegateView的UIView,在內(nèi)部添加了一個button感凤,通過點擊button回調(diào)悯周。
以前我們通常會使用代理、block陪竿、通知等來實現(xiàn)這一步驟禽翼,現(xiàn)在我們用RACSubject來代替一下。

定義RACSubject.png
訂閱.png
發(fā)送信號.png

END
原來讀源碼真的會上癮族跛,如果感覺對您有幫助闰挡,請動動手指點贊一下

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市庸蔼,隨后出現(xiàn)的幾起案子解总,更是在濱河造成了極大的恐慌,老刑警劉巖姐仅,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件花枫,死亡現(xiàn)場離奇詭異,居然都是意外死亡掏膏,警方通過查閱死者的電腦和手機劳翰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馒疹,“玉大人佳簸,你說我怎么就攤上這事∮北洌” “怎么了生均?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長腥刹。 經(jīng)常有香客問我马胧,道長,這世上最難降的妖魔是什么衔峰? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任佩脊,我火速辦了婚禮蛙粘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘威彰。我一直安慰自己出牧,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布歇盼。 她就那樣靜靜地躺著舔痕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪豹缀。 梳的紋絲不亂的頭發(fā)上赵讯,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音耿眉,去河邊找鬼。 笑死鱼响,一個胖子當著我的面吹牛鸣剪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播丈积,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼筐骇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了江滨?” 一聲冷哼從身側(cè)響起铛纬,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唬滑,沒想到半個月后告唆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡晶密,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年擒悬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稻艰。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡懂牧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尊勿,到底是詐尸還是另有隱情僧凤,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布元扔,位于F島的核電站躯保,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏摇展。R本人自食惡果不足惜吻氧,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一溺忧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盯孙,春花似錦鲁森、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至骑晶,卻和暖如春痛垛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桶蛔。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工匙头, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仔雷。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓蹂析,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碟婆。 傳聞我的和親對象是個殘疾皇子电抚,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

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