前言
寫(xiě)技術(shù)文章和學(xué)技術(shù)是一樣的秩伞,一定要持之以恒才能攻克它袖牙,我還繼續(xù)在寫(xiě)啥供,你們一定要堅(jiān)持學(xué)下去哦。今天是第三天的學(xué)習(xí)任務(wù)了薄翅,有人反饋說(shuō),已經(jīng)對(duì)RAC的代理機(jī)制愛(ài)不釋手了氓奈,哈哈翘魄,這是好現(xiàn)象,今天要講的是剩下的部分舀奶。也屬于比較基礎(chǔ)的應(yīng)用暑竟,希望和我一起來(lái)掌握一下。
RACSequence和RACTuple簡(jiǎn)單使用
RACSequence是RAC中的集合類(lèi)育勺,用于代替NSArray,NSDictionary,可以使用它來(lái)快速遍歷數(shù)組和字典但荤。
遍歷數(shù)組:
- 第一步: 把數(shù)組轉(zhuǎn)換成集合RACSequence numbers.rac_sequence
- 第二步:把集合RACSequence轉(zhuǎn)換RACSignal信號(hào)類(lèi),numbers.rac_sequence.signal
- 第三步: 訂閱信號(hào),激活信號(hào)涧至,會(huì)自動(dòng)把集合中的所有值腹躁,遍歷出來(lái)。
代碼展示
遍歷字典:
遍歷出來(lái)的鍵值對(duì)會(huì)包裝成RACTuple(元組對(duì)象)
字典轉(zhuǎn)模型:
RACMulticastConnection簡(jiǎn)單使用
需求:假設(shè)在一個(gè)信號(hào)中發(fā)送請(qǐng)求南蓬,每次訂閱一次都會(huì)發(fā)送請(qǐng)求纺非,這樣就會(huì)導(dǎo)致多次請(qǐng)求。
解決:使用RACMulticastConnection就能解決.
使用步驟:
- 第一步: 創(chuàng)建信號(hào) + (RACSignal *)createSignal:(RACDisposable * (^)(id<RACSubscriber> subscriber))didSubscribe
- 第二步:創(chuàng)建連接 RACMulticastConnection *connect = [signal publish];
- 第三步: 訂閱信號(hào),注意:訂閱的不在是之前的信號(hào)赘方,而是連接的信號(hào)烧颖。 [connect.signal subscribeNext:nextBlock]
- 第四步: 訂閱信號(hào),注意:訂閱的不在是之前的信號(hào),而是連接的信號(hào)蒜焊。 [connect.signal subscribeNext:nextBlock]
1.創(chuàng)建請(qǐng)求信號(hào)
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"發(fā)送請(qǐng)求");
return nil;
}];
// 2.訂閱信號(hào)
[signal subscribeNext:^(id x) {
NSLog(@"接收數(shù)據(jù)");
}];
// 2.訂閱信號(hào)
[signal subscribeNext:^(id x) {
NSLog(@"接收數(shù)據(jù)");
}];
// 3.運(yùn)行結(jié)果倒信,會(huì)執(zhí)行兩遍發(fā)送請(qǐng)求,也就是每次訂閱都會(huì)發(fā)送一次請(qǐng)求
// RACMulticastConnection:解決重復(fù)請(qǐng)求問(wèn)題
// 1.創(chuàng)建信號(hào)
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSLog(@"發(fā)送請(qǐng)求");
[subscriber sendNext:@1];
return nil;
}];
// 2.創(chuàng)建連接
RACMulticastConnection *connect = [signal publish];
// 3.訂閱信號(hào)泳梆,
// 注意:訂閱信號(hào)鳖悠,也不能激活信號(hào),只是保存訂閱者到數(shù)組优妙,必須通過(guò)連接,當(dāng)調(diào)用連接乘综,就會(huì)一次性調(diào)用所有訂閱者的sendNext:
[connect.signal subscribeNext:^(id x) {
NSLog(@"訂閱者一信號(hào)");
}];
[connect.signal subscribeNext:^(id x) {
NSLog(@"訂閱者二信號(hào)");
}];
// 4.連接,激活信號(hào)
[connect connect];
RACObserve簡(jiǎn)單使用
監(jiān)聽(tīng)某個(gè)對(duì)象的某個(gè)屬性,返回的是信號(hào)。
RAC中的KVO大部分都是宏定義套硼,所以代碼異常簡(jiǎn)潔卡辰,簡(jiǎn)單來(lái)說(shuō)就是RACObserve(TARGET, KEYPATH)這種形式,TARGET是監(jiān)聽(tīng)目標(biāo),KEYPATH是要觀察的屬性值九妈,舉個(gè)例子反砌,如果UIScrollView滾動(dòng)則輸出success。
響應(yīng)事件
1.按鈕的點(diǎn)擊
2. UIAlertView響應(yīng)
3. UITextField響應(yīng)
4. 通知監(jiān)聽(tīng)
5. map用法
小結(jié)
今天的第三天知識(shí)點(diǎn)先總結(jié)這么多萌朱,希望大家多多應(yīng)用宴树,能夠在使用中嘗試下更多的方法,畢竟我只能起到拋磚引玉的作用晶疼,舉一反三還需要你們的研究酒贬。希望我的小小文字,能帶給你些許的幫助翠霍,也就是我的初心了锭吨。感謝大家對(duì)我的支持和私信。支持我就多多留言寒匙,添加個(gè)關(guān)注吧零如,我會(huì)持續(xù)更新文章的。