RAC單個(gè)信號的變換

[TOC]

信號類型

  • 單元信號
RACSignal *signal1 = [RACSignal return:@"Some Value"];
RACSignal *signal2 = [RACSignal error:errorObject];
RACSignal *signal3 = [RACSignal empty];
RACSignal *gignal4 = [RACSignal never];

  • 動態(tài)信號
    RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        [subscriber sendNext:@1];
        [subscriber sendNext:@2];
        [subscriber sendError:errorObject];
        [subscriber sendCompleted];
        return [RACDisposable disposableWithBlock:^{
            
        }];
    }];
  • cocoa橋接
RACSignal *signal = [self.view rac_signalForSelector:@selector(setFrame:)];
RACSignal *signal = [self.button rac_signalForControlEvents:UIControlEventTouchUpInside];
RACSignal *signal = [self.view rac_willDeallocSignal];
RACSignal *signal = RACObserve(self.view, backgroundColor);

[self.view rac_liftSelector:@selector(convertRect:toView:) withSignals:signal1, signal2, nil];
[self.view rac_liftSelector:@selector(convertPoint:toView:) withSignalsFromArray:@[signql3, signal4]];
[self.view rac_liftSelector:@selector(convertRect:toLayer:) withSignalOfArguments:signal];
  • 信號變換
RACSignal *signal = [signal map:^id(id value) {
   return [value substringFromIndex:1];
}];
  • 序列轉(zhuǎn)換
RACSignal *signal = sequence.signal;

對值的操作


  • map:用于把源信號內(nèi)容映射成新的內(nèi)容(信號的轉(zhuǎn)換)
Snip20161223_8.png
  • mapReplace:返回固定的信號
Snip20161223_9.png
  • reduceEach聚合: 用于信號發(fā)出的內(nèi)容是元組,
Snip20161223_10.png
- (RACSignal *)not;
- (RACSignal *)and;
- (RACSignal *)or;
- (RACSignal *)reduceApply;
- (RACSignal *)materialize;
- (RACSignal *)dematerialize;

對數(shù)量的變換


  • filter:過濾信號萝毛,使用它可以獲取滿足條件的信號
Snip20161223_11.png
  • ignore:忽略不符合條件的信號
Snip20161223_12.png
// 忽略所有的值
- (RACSignal *)ignoreValues;

// 去重逾条、當(dāng)上一次的值和當(dāng)前的值有明顯的變化就會發(fā)出信號,否則會被忽略掉
- (RACSignal *)distinctUntilChanged;
  • take: 從開始一共取N次的信號
Snip20161223_13.png
  • skip:跳過幾個(gè)信號,不接收
Snip20161223_15.png
// 取最后N次的信號,前提條件猛蔽,訂閱者必須調(diào)用完成,因?yàn)橹挥型瓿山畔撸椭揽偣灿卸嗌傩盘?
- (RACSignal *)takeLast:(NSUInteger)count;
// 獲取信號直到某個(gè)信號執(zhí)行完成
- (RACSignal *)takeUntilBlock:(BOOL (^)(id x))predicate;
// 跳過信號直到某個(gè)信號執(zhí)行完成
- (RACSignal *)skipUntilBlock:(BOOL (^)(id x))predicate;
- (RACSignal *)skipWhileBlock:(BOOL (^)(id x))predicate;
  • 混合操作
- (RACSignal *)any;
- (RACSignal *)any:(BOOL (^)(id object))predicateBlock;
- (RACSignal *)all:(BOOL (^)(id object))predicateBlock;

- 增加操作

  • startWith:在值的最前面增加
Snip20161223_16.png
  • repeat:無限重復(fù)操作
Snip20161223_17.png
  • retry:只要失敗屎媳,就會重新執(zhí)行創(chuàng)建信號中的block,直到成功. 一般用于網(wǎng)絡(luò)請求
Snip20161223_18.png
  • collect:會把歷次出現(xiàn)的值,混成一個(gè)Array,等信號A完成后阔逼,就把這個(gè)Array生成一個(gè)新的信號返回給B
Snip20161223_20.png
  • Aggregate: 會把歷次出現(xiàn)的值累加兆衅,返回一個(gè)新的值
Snip20161223_21.png
  • Scan: 會把歷次出現(xiàn)的值累加,返回累加的中間值
Snip20161223_22.png
Snip20161223_23.png

對時(shí)間的操作

Snip20161223_25.png

delay: 延時(shí)

Snip20161223_26.png
  • throttle:節(jié)流 當(dāng)某個(gè)信號發(fā)送比較頻繁時(shí)嗜浮,可以使用節(jié)流羡亩,在某一段時(shí)間不發(fā)送信號內(nèi)容,過了一段時(shí)間獲取信號的最新內(nèi)容發(fā)出危融。畏铆,
Snip20161223_27.png
Snip20161223_28.png

組合操作

  • concat:組合 按一定順序拼接信號,當(dāng)多個(gè)信號發(fā)出的時(shí)候吉殃,有順序的接收信號
Snip20161223_29.png
Snip20161223_30.png
  • merge 把多個(gè)信號合并為一個(gè)信號辞居,任何一個(gè)信號有新值的時(shí)候就會調(diào)用
Snip20161223_31.png
Snip20161223_32.png
  • ZipWith:把兩個(gè)信號壓縮成一個(gè)信號,只有當(dāng)兩個(gè)信號同時(shí)發(fā)出信號內(nèi)容時(shí)蛋勺,并且把兩個(gè)信號的內(nèi)容合并成一個(gè)元組瓦灶,才會觸發(fā)壓縮流的next事件。
Snip20161223_33.png
  • combineLatest:將多個(gè)信號合并起來抱完,并且拿到各個(gè)信號的最新的值,必須每個(gè)合并的signal至少都有過一次sendNext贼陶,才會觸發(fā)合并的信號。
Snip20161223_34.png
Snip20161223_35.png
  • sample:
Snip20161223_36.png
  • TakeUntil 獲取信號直到某個(gè)信號執(zhí)行完成
Snip20161223_37.png
  • takeUntilReplacement:
Snip20161223_38.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市碉怔,隨后出現(xiàn)的幾起案子烘贴,更是在濱河造成了極大的恐慌,老刑警劉巖撮胧,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桨踪,死亡現(xiàn)場離奇詭異,居然都是意外死亡趴樱,警方通過查閱死者的電腦和手機(jī)馒闷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叁征,“玉大人纳账,你說我怎么就攤上這事∞嗵郏” “怎么了疏虫?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長啤呼。 經(jīng)常有香客問我卧秘,道長,這世上最難降的妖魔是什么官扣? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任翅敌,我火速辦了婚禮,結(jié)果婚禮上惕蹄,老公的妹妹穿的比我還像新娘蚯涮。我一直安慰自己,他們只是感情好卖陵,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布遭顶。 她就那樣靜靜地躺著,像睡著了一般泪蔫。 火紅的嫁衣襯著肌膚如雪棒旗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天撩荣,我揣著相機(jī)與錄音铣揉,去河邊找鬼。 笑死婿滓,一個(gè)胖子當(dāng)著我的面吹牛老速,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凸主,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼额湘!你這毒婦竟也來了卿吐?” 一聲冷哼從身側(cè)響起旁舰,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嗡官,沒想到半個(gè)月后箭窜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衍腥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年磺樱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婆咸。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡竹捉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尚骄,到底是詐尸還是另有隱情块差,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布倔丈,位于F島的核電站憨闰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏需五。R本人自食惡果不足惜鹉动,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宏邮。 院中可真熱鬧泽示,春花似錦、人聲如沸蜀铲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽记劝。三九已至变姨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厌丑,已是汗流浹背定欧。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怒竿,地道東北人砍鸠。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像耕驰,于是被迫代替她去往敵國和親爷辱。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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

  • RAC使用測試Demo下載:github.com/FuWees/WPRACTestDemo 1.ReactiveC...
    FuWees閱讀 6,385評論 3 10
  • 我一直覺得,RAC是仿佛已經(jīng)被遺忘的話題饭弓,擅長的人已經(jīng)把它化為內(nèi)力双饥,不擅長的早已忘記這個(gè)技術(shù)的存在,這個(gè)暫且按住不...
    daixunry閱讀 4,412評論 0 11
  • 1.ReactiveCocoa常見操作方法介紹弟断。 1.1 ReactiveCocoa操作須知 所有的信號(RACS...
    萌芽的冬天閱讀 1,026評論 0 5
  • 前言由于時(shí)間的問題咏花,暫且只更新這么多了,后續(xù)還會持續(xù)更新本文《最快讓你上手ReactiveCocoa之進(jìn)階篇》阀趴,目...
    Karos_凱閱讀 1,741評論 0 6
  • 煙雨三月刘急,花都開了棚菊,在嶺南,最引人注目的莫過于那一簇簇的木棉花排霉∏现辏火紅火紅地綻放在枝頭,你以為她用盡了洪荒之力攻柠,以至...
    maybe缺乏注意力閱讀 287評論 1 1