iOS開(kāi)發(fā)之RAC的用法

一、RAC簡(jiǎn)介

1秸脱、RAC全稱:ReactiveCocoa, Github 一個(gè)開(kāi)源框架

2部蛇、ReactiveCocoa:函數(shù)響應(yīng)編程框架?

3摊唇、目的:事件的監(jiān)聽(tīng),接管了蘋(píng)果所有的事件機(jī)制(addTarget涯鲁,代理巷查,通知,KVO)

總結(jié):RAC是一套重量級(jí)響應(yīng)式函數(shù)式編程開(kāi)源框架抹腿,它可以幫助我們簡(jiǎn)單的處理事件岛请。它具有高聚合低耦合的特性。

注意:Block中的循環(huán)引用問(wèn)題

二警绩、RAC使用

1崇败、導(dǎo)入ReactiveObjC ------- 使用CocoaPads來(lái)集成?pod 'ReactiveObjC'

2、#import?<ReactiveObjC.h>

3肩祥、以下就是信號(hào)三部曲后室,下面我們來(lái)看代碼的實(shí)現(xiàn):

? ?//1.創(chuàng)建信號(hào)

? ? //創(chuàng)建一個(gè)數(shù)組,在信號(hào)對(duì)象中

? ? RACSubject*subject = [RACSubject subject];

? ? //2.訂閱信號(hào)

? ? //創(chuàng)建一個(gè)訂閱者混狠,將Block保存到訂閱者中咧擂。將訂閱者保存到第一步創(chuàng)建的數(shù)組中

? ? [subject subscribeNext:^(id? _Nullablex) {

? ? ? ? NSLog(@"接收到了%@",x);

? ? }];

? ? //3.發(fā)送信號(hào)

? ? //遍歷信號(hào)對(duì)象中的數(shù)組,取出訂閱的對(duì)象檀蹋。調(diào)用訂閱者對(duì)象中的Block松申,執(zhí)行。

? ? [subject sendNext:@"發(fā)送的內(nèi)容"];

三俯逾、實(shí)際開(kāi)發(fā)中使用RAC

3.1贸桶、KVO

//RAC的KVO

_person= [[Personalloc]init];

//observer的參數(shù)為nil,所以不需要remove? [_person rac_observeKeyPath:NSStringFromSelector(@selector(name))options:NSKeyValueObservingOptionNewobserver:nilblock:^(idvalue,NSDictionary*change,BOOLcausedByDealloc,BOOLaffectedOnlyLastComponent) {

? ? ? ? NSLog(@"value:%@",value);

}];

//下面的代碼比上面的清爽很多

[[_person rac_valuesForKeyPath:NSStringFromSelector(@selector(name)) observer:nil] subscribeNext:^(id? _Nullable x) {

? ? ? ? NSLog(@"%@",x);

}];

3.2桌肴、NSNotificationCenter

//rac還能監(jiān)聽(tīng)通知的各種事件皇筛。下面就是監(jiān)聽(tīng)了APP退到后臺(tái)的事件。object的參數(shù)為nil坠七,所以不需要移除通知

[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIApplicationDidEnterBackgroundNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {

? ? ? ? NSLog(@"%@",x);

}];

3.3水醋、UIButton

[[_btn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {

? ? ? ? NSLog(@"%@",x);

}];

直接在Block中寫(xiě)實(shí)現(xiàn)的代碼旗笔,替代了@selector方法去實(shí)現(xiàn)

3.4、UITextField

[_textfield.rac_textSignal subscribeNext:^(NSString * _Nullable x) {

? ? ? ? NSLog(@"%@",x);

}];

監(jiān)聽(tīng)了輸入框內(nèi)所有的變化拄踪,包括準(zhǔn)備編輯蝇恶,和退出編輯。再也不用寫(xiě)delegate了惶桐,編碼起來(lái)方便快捷

3.5撮弧、宏RAC:RAC(TARGET, ...):獲取某個(gè)信號(hào)的值賦給屬性

//獲取textfield的內(nèi)容變化,賦值給label的text

RAC(_label , text) = _textfield.rac_textSignal;

3.6姚糊、RACObserve(TARGET, KEYPATH):監(jiān)聽(tīng)某個(gè)類的某個(gè)屬性

[RACObserve(self.person,name) subscribeNext:^(id _Nullable x){

????NSLog(@"%@",x);

}];

最后編輯于
?著作權(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)店門(mé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)容