iOS ReactiveCocoa 最全常用API整理(可做為手冊(cè)查詢)

本文適合有一定RAC基礎(chǔ)的童鞋做不時(shí)的查詢收毫,所以本文不做詳細(xì)解釋。

一谓媒、常見類

  • 1淆院、RACSiganl 信號(hào)類。

    • RACEmptySignal :空信號(hào)句惯,用來實(shí)現(xiàn) RACSignal 的 +empty 方法土辩;
    • RACReturnSignal :一元信號(hào),用來實(shí)現(xiàn) RACSignal 的 +return: 方法抢野;
    • RACDynamicSignal :動(dòng)態(tài)信號(hào)拷淘,使用一個(gè) block - 來實(shí)現(xiàn)訂閱行為,我們?cè)谑褂?RACSignal 的 +createSignal: 方法時(shí)創(chuàng)建的就是該類的實(shí)例指孤;
    • RACErrorSignal :錯(cuò)誤信號(hào)启涯,用來實(shí)現(xiàn) RACSignal 的 +error: 方法贬堵;
    • RACChannelTerminal :通道終端,代表 RACChannel 的一個(gè)終端结洼,用來實(shí)現(xiàn)雙向綁定黎做。
  • 2、RACSubscriber 訂閱者

  • 3松忍、RACDisposable 用于取消訂閱或者清理資源蒸殿,當(dāng)信號(hào)發(fā)送完成或者發(fā)送錯(cuò)誤的時(shí)候,就會(huì)自動(dòng)觸發(fā)它鸣峭。

    • RACSerialDisposable :作為 disposable 的容器使用宏所,可以包含一個(gè) disposable 對(duì)象,并且允許將這個(gè) disposable 對(duì)象通過原子操作交換出來摊溶;
    • RACKVOTrampoline :代表一次 KVO 觀察爬骤,并且可以用來停止觀察;
    • RACCompoundDisposable :它可以包含多個(gè) disposable 對(duì)象莫换,并且支持手動(dòng)添加和移除 disposable 對(duì)象
    • RACScopedDisposable :當(dāng)它被 dealloc 的時(shí)候調(diào)用本身的 -dispose 方法盖腕。
  • 4、RACSubject 信號(hào)提供者浓镜,自己可以充當(dāng)信號(hào),又能發(fā)送信號(hào)劲厌。

    • RACGroupedSignal :分組信號(hào)膛薛,用來實(shí)現(xiàn) RACSignal 的分組功能;
    • RACBehaviorSubject :重演最后值的信號(hào)补鼻,當(dāng)被訂閱時(shí)哄啄,會(huì)向訂閱者發(fā)送它最后接收到的值;
    • RACReplaySubject :重演信號(hào)风范,保存發(fā)送過的值咨跌,當(dāng)被訂閱時(shí),會(huì)向訂閱者重新發(fā)送這些值硼婿。
  • 5锌半、RACTuple 元組類,類似NSArray,用來包裝值.

  • 6、RACSequence RAC中的集合類

  • 7寇漫、RACCommand RAC中用于處理事件的類刊殉,可以把事件如何處理,事件中的數(shù)據(jù)如何傳遞,包裝到這個(gè)類中州胳,他可以很方便的監(jiān)控事件的執(zhí)行過程记焊。

  • 8、RACMulticastConnection 用于當(dāng)一個(gè)信號(hào)栓撞,被多次訂閱時(shí)遍膜,為了保證創(chuàng)建信號(hào)時(shí)碗硬,避免多次調(diào)用創(chuàng)建信號(hào)中的block,造成副作用瓢颅,可以使用這個(gè)類處理恩尾。

  • 9、RACScheduler RAC中的隊(duì)列惜索,用GCD封裝的特笋。

    • RACImmediateScheduler :立即執(zhí)行調(diào)度的任務(wù),這是唯一一個(gè)支持同步執(zhí)行的調(diào)度器巾兆;
    • RACQueueScheduler :一個(gè)抽象的隊(duì)列調(diào)度器猎物,在一個(gè) GCD 串行列隊(duì)中異步調(diào)度所有任務(wù);
    • RACTargetQueueScheduler :繼承自 RACQueueScheduler 角塑,在一個(gè)以一個(gè)任意的 GCD 隊(duì)列為 target 的串行隊(duì)列中異步調(diào)度所有任務(wù)蔫磨;
    • RACSubscriptionScheduler :一個(gè)只用來調(diào)度訂閱的調(diào)度器。

二圃伶、常見用法

  • rac_signalForSelector : 代替代理
  • rac_valuesAndChangesForKeyPath: KVO
  • rac_signalForControlEvents:監(jiān)聽事件
  • rac_addObserverForName 代替通知
  • rac_textSignal:監(jiān)聽文本框文字改變
  • rac_liftSelector:withSignalsFromArray:Signals:當(dāng)傳入的Signals(信號(hào)數(shù)組)堤如,每一個(gè)signal都至少sendNext過一次,就會(huì)去觸發(fā)第一個(gè)selector參數(shù)的方法窒朋。

三搀罢、常見宏

  • RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于給某個(gè)對(duì)象的某個(gè)屬性綁定
  • RACObserve(self, name) :監(jiān)聽某個(gè)對(duì)象的某個(gè)屬性,返回的是信號(hào)。
  • @weakify(Obj)和@strongify(Obj)
  • RACTuplePack :把數(shù)據(jù)包裝成RACTuple(元組類)
  • RACTupleUnpack:把RACTuple(元組類)解包成對(duì)應(yīng)的數(shù)據(jù)
  • RACChannelTo 用于雙向綁定的一個(gè)終端

四侥猩、常用操作方法

  • flattenMap map 用于把源信號(hào)內(nèi)容映射成新的內(nèi)容榔至。
  • concat 組合 按一定順序拼接信號(hào),當(dāng)多個(gè)信號(hào)發(fā)出的時(shí)候欺劳,有順序的接收信號(hào)
  • then 用于連接兩個(gè)信號(hào)唧取,當(dāng)?shù)谝粋€(gè)信號(hào)完成,才會(huì)連接then返回的信號(hào)划提。
  • merge 把多個(gè)信號(hào)合并為一個(gè)信號(hào)枫弟,任何一個(gè)信號(hào)有新值的時(shí)候就會(huì)調(diào)用
  • zipWith 把兩個(gè)信號(hào)壓縮成一個(gè)信號(hào),只有當(dāng)兩個(gè)信號(hào)同時(shí)發(fā)出信號(hào)內(nèi)容時(shí)鹏往,并且把兩個(gè)信號(hào)的內(nèi)容合并成一個(gè)元組淡诗,才會(huì)觸發(fā)壓縮流的next事件。
  • combineLatest:將多個(gè)信號(hào)合并起來伊履,并且拿到各個(gè)信號(hào)的最新的值,必須每個(gè)合并的signal至少都有過一次sendNext袜漩,才會(huì)觸發(fā)合并的信號(hào)。
  • reduce聚合:用于信號(hào)發(fā)出的內(nèi)容是元組湾碎,把信號(hào)發(fā)出元組的值聚合成一個(gè)值

  • filter:過濾信號(hào)宙攻,使用它可以獲取滿足條件的信號(hào).
  • ignore:忽略完某些值的信號(hào).
  • distinctUntilChanged:當(dāng)上一次的值和當(dāng)前的值有明顯的變化就會(huì)發(fā)出信號(hào),否則會(huì)被忽略掉介褥。
  • take:從開始一共取N次的信號(hào)
  • takeLast:取最后N次的信號(hào),前提條件座掘,訂閱者必須調(diào)用完成递惋,因?yàn)橹挥型瓿桑椭揽偣灿卸嗌傩盘?hào).
  • takeUntil:(RACSignal *):獲取信號(hào)直到某個(gè)信號(hào)執(zhí)行完成
  • skip:(NSUInteger):跳過幾個(gè)信號(hào),不接受溢陪。
  • switchToLatest:用于signalOfSignals(信號(hào)的信號(hào))萍虽,有時(shí)候信號(hào)也會(huì)發(fā)出信號(hào),會(huì)在signalOfSignals中形真,獲取signalOfSignals發(fā)送的最新信號(hào)杉编。

  • doNext: 執(zhí)行Next之前,會(huì)先執(zhí)行這個(gè)Block

  • doCompleted: 執(zhí)行sendCompleted之前咆霜,會(huì)先執(zhí)行這個(gè)Block

  • timeout:超時(shí)邓馒,可以讓一個(gè)信號(hào)在一定的時(shí)間后,自動(dòng)報(bào)錯(cuò)蛾坯。

  • interval 定時(shí):每隔一段時(shí)間發(fā)出信號(hào)

  • delay 延遲發(fā)送next光酣。

  • retry重試 :只要失敗,就會(huì)重新執(zhí)行創(chuàng)建信號(hào)中的block,直到成功.

  • replay重放:當(dāng)一個(gè)信號(hào)被多次訂閱,反復(fù)播放內(nèi)容

  • throttle節(jié)流:當(dāng)某個(gè)信號(hào)發(fā)送比較頻繁時(shí)脉课,可以使用節(jié)流救军,在某一段時(shí)間不發(fā)送信號(hào)內(nèi)容,過了一段時(shí)間獲取信號(hào)的最新內(nèi)容發(fā)出倘零。

五唱遭、UI - Category(常用匯總)

  • 1、rac_prepareForReuseSignal: 需要復(fù)用時(shí)用 相關(guān)UI: MKAnnotationView呈驶、UICollectionReusableView拷泽、UITableViewCell、UITableViewHeaderFooterView

  • 2俐东、rac_buttonClickedSignal:點(diǎn)擊事件觸發(fā)信號(hào) 相關(guān)UI:UIActionSheet、UIAlertView

  • 3订晌、rac_command:button類虏辫、刷新類相關(guān)命令替換 相關(guān)UI:UIBarButtonItem、UIButton锈拨、UIRefreshControl

  • 4砌庄、rac_signalForControlEvents: control event 觸發(fā) 相關(guān)UI:UIControl

  • 5、rac_gestureSignal UIGestureRecognizer 事件處理信號(hào) 相關(guān)UI:UIGestureRecognizer

  • 6奕枢、rac_imageSelectedSignal 選擇圖片的信號(hào) 相關(guān)UI:UIImagePickerController

  • 7娄昆、rac_textSignal 相關(guān)UI:UITextField、UITextView

  • 8缝彬、可實(shí)現(xiàn)雙向綁定的相關(guān)API

    • rac_channelForControlEvents: key: nilValue: 相關(guān)UI:UIControl
    • rac_newDateChannelWithNilValue: 相關(guān)UI:UIDatePicker
    • rac_newSelectedSegmentIndexChannelWithNilValue: 相關(guān)UI:UISegmentedControl
    • rac_newValueChannelWithNilValue: 相關(guān)UI:UISlider萌焰、UIStepper
    • rac_newOnChannel 相關(guān)UI:UISwitch
    • rac_newTextChannel 相關(guān)UI:UITextField

六、Foundation - Category (常用匯總)

  • 1谷浅、NSArray
    • rac_sequence 信號(hào)集合
  • 2扒俯、NSData
    • rac_readContentsOfURL: options: scheduler: 比oc多出線程設(shè)置
  • 3奶卓、NSDictionary
    • rac_sequence 不解釋
    • rac_keySequence key 集合
    • rac_valueSequence value 集合
  • 4、NSEnumerator
    • rac_sequence 不解釋
  • 5撼玄、NSFileHandle
    • rac_readInBackground 見名知意
  • 6夺姑、NSIndexSet
    • rac_sequence 不解釋
  • 7、NSInvocation
    • rac_setArgument: atIndex: 設(shè)置參數(shù)
    • rac_argumentAtIndex 取某個(gè)參數(shù)
    • rac_returnValue 所關(guān)聯(lián)方法的返回值
  • 8掌猛、NSNotificationCenter
    • rac_addObserverForName: object:注冊(cè)通知
  • 9盏浙、NSObject
    • rac_willDeallocSignal 對(duì)象銷毀時(shí)發(fā)動(dòng)的信號(hào)
    • rac_description debug用
    • rac_observeKeyPath: options: observer: block:監(jiān)聽某個(gè)事件
    • rac_liftSelector: withSignals: 全部信號(hào)都next在執(zhí)行
    • rac_signalForSelector: 代替某個(gè)方法
    • rac_signalForSelector:(SEL)selector fromProtocol:代替代理
  • 9、NSOrderedSet
    • rac_sequence 不解釋
  • 10荔茬、NSSet
    • rac_sequence 不解釋
  • 11废膘、NSString
    • rac_keyPathComponents 獲取一個(gè)路徑所有的部分
    • rac_keyPathByDeletingLastKeyPathComponent 刪除路徑最后一部分
    • rac_keyPathByDeletingFirstKeyPathComponent 刪除路徑第一部分
    • rac_sequence 不解釋 (character)
    • rac_readContentsOfURL: usedEncoding: scheduler: 比之OC多線程調(diào)用
  • 12、NSURLConnection
    • rac_sendAsynchronousRequest 發(fā)起異步請(qǐng)求
  • 13兔院、NSUserDefaults
    • rac_channelTerminalForKey 用于雙向綁定殖卑,此乃一端

本文由作者 王隆帥 編寫,轉(zhuǎn)載請(qǐng)保留版權(quán)網(wǎng)址坊萝,感謝您的理解與分享孵稽,讓生活變的更美好!

七、參考資料

www.cocoachina.com/ios/2016010… www.reibang.com/p/d262f2c55… www.reibang.com/p/da9698064… mp.weixin.qq.com/s?__biz=MzA… www.reibang.com/p/87ef6720a… www.reibang.com/p/e10e5ca41… www.th7.cn/Program/IOS…

作者:王隆帥
鏈接:https://juejin.im/post/578f49fa5bbb50005b95fb80
來源:掘金
著作權(quán)歸作者所有十偶。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)菩鲜,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惦积,一起剝皮案震驚了整個(gè)濱河市接校,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狮崩,老刑警劉巖蛛勉,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異睦柴,居然都是意外死亡诽凌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門坦敌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侣诵,“玉大人,你說我怎么就攤上這事狱窘《潘常” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵蘸炸,是天一觀的道長躬络。 經(jīng)常有香客問我,道長搭儒,這世上最難降的妖魔是什么洗鸵? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任越锈,我火速辦了婚禮,結(jié)果婚禮上膘滨,老公的妹妹穿的比我還像新娘甘凭。我一直安慰自己,他們只是感情好火邓,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布丹弱。 她就那樣靜靜地躺著,像睡著了一般铲咨。 火紅的嫁衣襯著肌膚如雪躲胳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天纤勒,我揣著相機(jī)與錄音坯苹,去河邊找鬼。 笑死摇天,一個(gè)胖子當(dāng)著我的面吹牛粹湃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泉坐,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼为鳄,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了腕让?” 一聲冷哼從身側(cè)響起孤钦,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纯丸,沒想到半個(gè)月后偏形,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡觉鼻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年俊扭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滑凉。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡统扳,死狀恐怖喘帚,靈堂內(nèi)的尸體忽然破棺而出畅姊,到底是詐尸還是另有隱情,我是刑警寧澤吹由,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布若未,位于F島的核電站,受9級(jí)特大地震影響倾鲫,放射性物質(zhì)發(fā)生泄漏粗合。R本人自食惡果不足惜萍嬉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望隙疚。 院中可真熱鬧壤追,春花似錦、人聲如沸供屉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伶丐。三九已至悼做,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哗魂,已是汗流浹背肛走。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留录别,地道東北人朽色。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓秉犹,卻偏偏與公主長得像侠仇,于是被迫代替她去往敵國和親先紫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子果覆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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