ReactiveCocoa常用API介紹

本文適合有一定RAC基礎的童鞋做不時的查詢,所以本文不做詳細解釋。

一墨林、常見類

1、RACSiganl 信號類犯祠。

RACEmptySignal :空信號旭等,用來實現(xiàn) RACSignal 的 +empty 方法;

RACReturnSignal :一元信號衡载,用來實現(xiàn) RACSignal 的 +return: 方法搔耕;

RACDynamicSignal :動態(tài)信號,使用一個 block - 來實現(xiàn)訂閱行為痰娱,我們在使用 RACSignal 的 +createSignal: 方法時創(chuàng)建的就是該類的實例弃榨;

RACErrorSignal :錯誤信號,用來實現(xiàn) RACSignal 的 +error: 方法梨睁;

RACChannelTerminal :通道終端鲸睛,代表 RACChannel 的一個終端,用來實現(xiàn)雙向綁定坡贺。

2腊凶、RACSubscriber 訂閱者

3、RACDisposable 用于取消訂閱或者清理資源拴念,當信號發(fā)送完成或者發(fā)送錯誤的時候钧萍,就會自動觸發(fā)它。

RACSerialDisposable :作為 disposable 的容器使用政鼠,可以包含一個 disposable 對象风瘦,并且允許將這個 disposable 對象通過原子操作交換出來;

RACKVOTrampoline :代表一次 KVO 觀察公般,并且可以用來停止觀察万搔;

RACCompoundDisposable :它可以包含多個 disposable 對象胡桨,并且支持手動添加和移除 disposable 對象

RACScopedDisposable :當它被 dealloc 的時候調用本身的 -dispose 方法。

4瞬雹、RACSubject 信號提供者昧谊,自己可以充當信號,又能發(fā)送信號酗捌。

RACGroupedSignal :分組信號呢诬,用來實現(xiàn) RACSignal 的分組功能;

RACBehaviorSubject :重演最后值的信號胖缤,當被訂閱時尚镰,會向訂閱者發(fā)送它最后接收到的值;

RACReplaySubject :重演信號哪廓,保存發(fā)送過的值狗唉,當被訂閱時,會向訂閱者重新發(fā)送這些值涡真。

5分俯、RACTuple 元組類,類似NSArray,用來包裝值.

6、RACSequence RAC中的集合類

7哆料、RACCommand RAC中用于處理事件的類缸剪,可以把事件如何處理,事件中的數(shù)據(jù)如何傳遞,包裝到這個類中剧劝,他可以很方便的監(jiān)控事件的執(zhí)行過程橄登。

8抓歼、RACMulticastConnection 用于當一個信號讥此,被多次訂閱時,為了保證創(chuàng)建信號時谣妻,避免多次調用創(chuàng)建信號中的block萄喳,造成副作用,可以使用這個類處理蹋半。

9他巨、RACScheduler RAC中的隊列,用GCD封裝的减江。

RACImmediateScheduler :立即執(zhí)行調度的任務染突,這是唯一一個支持同步執(zhí)行的調度器;

RACQueueScheduler :一個抽象的隊列調度器辈灼,在一個 GCD 串行列隊中異步調度所有任務份企;

RACTargetQueueScheduler :繼承自 RACQueueScheduler ,在一個以一個任意的 GCD 隊列為 target 的串行隊列中異步調度所有任務巡莹;

RACSubscriptionScheduler :一個只用來調度訂閱的調度器司志。

二甜紫、常見用法

rac_signalForSelector : 代替代理

rac_valuesAndChangesForKeyPath: KVO

rac_signalForControlEvents:監(jiān)聽事件

rac_addObserverForName 代替通知

rac_textSignal:監(jiān)聽文本框文字改變

rac_liftSelector:withSignalsFromArray:Signals:當傳入的Signals(信號數(shù)組),每一個signal都至少sendNext過一次骂远,就會去觸發(fā)第一個selector參數(shù)的方法囚霸。

三、常見宏

RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于給某個對象的某個屬性綁定

RACObserve(self, name) :監(jiān)聽某個對象的某個屬性,返回的是信號激才。

@weakify(Obj)和@strongify(Obj)

RACTuplePack :把數(shù)據(jù)包裝成RACTuple(元組類)

RACTupleUnpack:把RACTuple(元組類)解包成對應的數(shù)據(jù)

RACChannelTo 用于雙向綁定的一個終端

四拓型、常用操作方法

flattenMap map 用于把源信號內容映射成新的內容。

concat 組合 按一定順序拼接信號贸营,當多個信號發(fā)出的時候吨述,有順序的接收信號

then 用于連接兩個信號,當?shù)谝粋€信號完成钞脂,才會連接then返回的信號揣云。

merge 把多個信號合并為一個信號,任何一個信號有新值的時候就會調用

zipWith 把兩個信號壓縮成一個信號冰啃,只有當兩個信號同時發(fā)出信號內容時邓夕,并且把兩個信號的內容合并成一個元組,才會觸發(fā)壓縮流的next事件阎毅。

combineLatest:將多個信號合并起來焚刚,并且拿到各個信號的最新的值,必須每個合并的signal至少都有過一次sendNext,才會觸發(fā)合并的信號扇调。

reduce聚合:用于信號發(fā)出的內容是元組矿咕,把信號發(fā)出元組的值聚合成一個值

filter:過濾信號,使用它可以獲取滿足條件的信號.

ignore:忽略完某些值的信號.

distinctUntilChanged:當上一次的值和當前的值有明顯的變化就會發(fā)出信號狼钮,否則會被忽略掉碳柱。

take:從開始一共取N次的信號

takeLast:取最后N次的信號,前提條件,訂閱者必須調用完成熬芜,因為只有完成莲镣,就知道總共有多少信號.

takeUntil:(RACSignal *):獲取信號直到某個信號執(zhí)行完成

skip:(NSUInteger):跳過幾個信號,不接受。

switchToLatest:用于signalOfSignals(信號的信號)涎拉,有時候信號也會發(fā)出信號瑞侮,會在signalOfSignals中,獲取signalOfSignals發(fā)送的最新信號鼓拧。

doNext: 執(zhí)行Next之前半火,會先執(zhí)行這個Block

doCompleted: 執(zhí)行sendCompleted之前,會先執(zhí)行這個Block

timeout:超時季俩,可以讓一個信號在一定的時間后钮糖,自動報錯。

interval 定時:每隔一段時間發(fā)出信號

delay 延遲發(fā)送next种玛。

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

replay重放:當一個信號被多次訂閱,反復播放內容

throttle節(jié)流:當某個信號發(fā)送比較頻繁時瓤檐,可以使用節(jié)流,在某一段時間不發(fā)送信號內容娱节,過了一段時間獲取信號的最新內容發(fā)出挠蛉。

五、UI - Category(常用匯總)

1肄满、rac_prepareForReuseSignal: 需要復用時用

相關UI: MKAnnotationView谴古、UICollectionReusableView、UITableViewCell稠歉、UITableViewHeaderFooterView

2掰担、rac_buttonClickedSignal:點擊事件觸發(fā)信號

相關UI:UIActionSheet、UIAlertView

3怒炸、rac_command:button類带饱、刷新類相關命令替換

相關UI:UIBarButtonItem、UIButton阅羹、UIRefreshControl

4勺疼、rac_signalForControlEvents: control event 觸發(fā)

相關UI:UIControl

5、rac_gestureSignal UIGestureRecognizer 事件處理信號

相關UI:UIGestureRecognizer

6捏鱼、rac_imageSelectedSignal 選擇圖片的信號

相關UI:UIImagePickerController

7执庐、rac_textSignal

相關UI:UITextField、UITextView

8导梆、可實現(xiàn)雙向綁定的相關API

rac_channelForControlEvents: key: nilValue:

相關UI:UIControl類

rac_newDateChannelWithNilValue:

相關UI:UIDatePicker

rac_newSelectedSegmentIndexChannelWithNilValue:

相關UI:UISegmentedControl

rac_newValueChannelWithNilValue:

相關UI:UISlider轨淌、UIStepper

rac_newOnChannel

相關UI:UISwitch

rac_newTextChannel

相關UI:UITextField

六、Foundation - Category (常用匯總)

1看尼、NSArray

rac_sequence 信號集合

2递鹉、NSData

rac_readContentsOfURL: options: scheduler: 比oc多出線程設置

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ù)

rac_argumentAtIndex 取某個參數(shù)

rac_returnValue 所關聯(lián)方法的返回值

8、NSNotificationCenter

rac_addObserverForName: object:注冊通知

9谷炸、NSObject

rac_willDeallocSignal 對象銷毀時發(fā)動的信號

rac_description debug用

rac_observeKeyPath: options: observer: block:監(jiān)聽某個事件

rac_liftSelector: withSignals: 全部信號都next在執(zhí)行

rac_signalForSelector: 代替某個方法

rac_signalForSelector:(SEL)selector fromProtocol:代替代理

10北专、NSOrderedSet

rac_sequence 不解釋

11、NSSet

rac_sequence 不解釋

12旬陡、NSString

rac_keyPathComponents 獲取一個路徑所有的部分

rac_keyPathByDeletingLastKeyPathComponent 刪除路徑最后一部分

rac_keyPathByDeletingFirstKeyPathComponent 刪除路徑第一部分

rac_sequence 不解釋 (character)

rac_readContentsOfURL: usedEncoding: scheduler: 比之OC多線程調用

13拓颓、NSURLConnection

rac_sendAsynchronousRequest 發(fā)起異步請求

14、NSUserDefaults

rac_channelTerminalForKey 用于雙向綁定

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末描孟,一起剝皮案震驚了整個濱河市驶睦,隨后出現(xiàn)的幾起案子砰左,更是在濱河造成了極大的恐慌,老刑警劉巖场航,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缠导,死亡現(xiàn)場離奇詭異,居然都是意外死亡溉痢,警方通過查閱死者的電腦和手機僻造,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孩饼,“玉大人髓削,你說我怎么就攤上這事《迫ⅲ” “怎么了立膛?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長梯码。 經(jīng)常有香客問我旧巾,道長,這世上最難降的妖魔是什么忍些? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任鲁猩,我火速辦了婚禮,結果婚禮上罢坝,老公的妹妹穿的比我還像新娘廓握。我一直安慰自己,他們只是感情好嘁酿,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布隙券。 她就那樣靜靜地躺著,像睡著了一般闹司。 火紅的嫁衣襯著肌膚如雪娱仔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天游桩,我揣著相機與錄音牲迫,去河邊找鬼。 笑死借卧,一個胖子當著我的面吹牛盹憎,可吹牛的內容都是我干的。 我是一名探鬼主播铐刘,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼陪每,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起檩禾,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤挂签,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后盼产,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竹握,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年辆飘,在試婚紗的時候發(fā)現(xiàn)自己被綠了啦辐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜈项,死狀恐怖芹关,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情紧卒,我是刑警寧澤侥衬,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站跑芳,受9級特大地震影響轴总,放射性物質發(fā)生泄漏。R本人自食惡果不足惜博个,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一怀樟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盆佣,春花似錦往堡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至痹兜,卻和暖如春穆咐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背字旭。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工对湃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谐算。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓熟尉,卻偏偏與公主長得像归露,于是被迫代替她去往敵國和親洲脂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容