iOS ReactiveCocoa 常用API整理

本文用途:方便自己查詢ReactiveCocoa API 使用

本文轉(zhuǎn)自?簡書作者 王隆帥? ?源文章地址:http://www.reibang.com/p/a4fefb434652

一、常見類

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用于取消訂閱或者清理資源米间,當(dāng)信號發(fā)送完成或者發(fā)送錯誤的時候强品,就會自動觸發(fā)它。

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

RACKVOTrampoline :代表一次 KVO 觀察逻锐,并且可以用來停止觀察夫晌;

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

RACScopedDisposable :當(dāng)它被 dealloc 的時候調(diào)用本身的 -dispose 方法昧诱。

4晓淀、RACSubject信號提供者,自己可以充當(dāng)信號盏档,又能發(fā)送信號凶掰。

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

RACBehaviorSubject :重演最后值的信號懦窘,當(dāng)被訂閱時,會向訂閱者發(fā)送它最后接收到的值稚配;

RACReplaySubject :重演信號畅涂,保存發(fā)送過的值,當(dāng)被訂閱時道川,會向訂閱者重新發(fā)送這些值午衰。

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

6冒萄、RACSequenceRAC中的集合類

7苇经、RACCommandRAC中用于處理事件的類,可以把事件如何處理,事件中的數(shù)據(jù)如何傳遞宦言,包裝到這個類中,他可以很方便的監(jiān)控事件的執(zhí)行過程商模。

8奠旺、RACMulticastConnection用于當(dāng)一個信號,被多次訂閱時施流,為了保證創(chuàng)建信號時响疚,避免多次調(diào)用創(chuàng)建信號中的block,造成副作用瞪醋,可以使用這個類處理忿晕。

9、RACSchedulerRAC中的隊列银受,用GCD封裝的践盼。

RACImmediateScheduler :立即執(zhí)行調(diào)度的任務(wù)鸦采,這是唯一一個支持同步執(zhí)行的調(diào)度器;

RACQueueScheduler :一個抽象的隊列調(diào)度器咕幻,在一個 GCD 串行列隊中異步調(diào)度所有任務(wù)渔伯;

RACTargetQueueScheduler :繼承自 RACQueueScheduler ,在一個以一個任意的 GCD 隊列為 target 的串行隊列中異步調(diào)度所有任務(wù)肄程;

RACSubscriptionScheduler :一個只用來調(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(信號數(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(元組類)解包成對應(yīng)的數(shù)據(jù)

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

四、常用操作方法

flattenMapmap用于把源信號內(nèi)容映射成新的內(nèi)容崎苗。

concat組合 按一定順序拼接信號狐粱,當(dāng)多個信號發(fā)出的時候,有順序的接收信號

then用于連接兩個信號胆数,當(dāng)?shù)谝粋€信號完成肌蜻,才會連接then返回的信號。

merge把多個信號合并為一個信號必尼,任何一個信號有新值的時候就會調(diào)用

zipWith把兩個信號壓縮成一個信號蒋搜,只有當(dāng)兩個信號同時發(fā)出信號內(nèi)容時,并且把兩個信號的內(nèi)容合并成一個元組判莉,才會觸發(fā)壓縮流的next事件豆挽。

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

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

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

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

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

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

takeLast:取最后N次的信號,前提條件泳炉,訂閱者必須調(diào)用完成憾筏,因為只有完成,就知道總共有多少信號.

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重放:當(dāng)一個信號被多次訂閱,反復(fù)播放內(nèi)容

throttle節(jié)流:當(dāng)某個信號發(fā)送比較頻繁時,可以使用節(jié)流油额,在某一段時間不發(fā)送信號內(nèi)容叠纷,過了一段時間獲取信號的最新內(nèi)容發(fā)出。

五潦嘶、UI - Category(常用匯總)

1涩嚣、rac_prepareForReuseSignal:需要復(fù)用時用

相關(guān)UI:MKAnnotationView、UICollectionReusableView掂僵、UITableViewCell航厚、UITableViewHeaderFooterView

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

相關(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_gestureSignalUIGestureRecognizer 事件處理信號

相關(guān)UI:UIGestureRecognizer

6辅肾、rac_imageSelectedSignal選擇圖片的信號

相關(guān)UI:UIImagePickerController

7、rac_textSignal

相關(guān)UI:UITextField轮锥、UITextView

8矫钓、可實現(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信號集合

2、NSData

rac_readContentsOfURL: options: scheduler:比oc多出線程設(shè)置

3蝴簇、NSDictionary

rac_sequence不解釋

rac_keySequencekey 集合

rac_valueSequencevalue 集合

4、NSEnumerator

rac_sequence不解釋

5匆帚、NSFileHandle

rac_readInBackground見名知意

6熬词、NSIndexSet

rac_sequence不解釋

7、NSInvocation

rac_setArgument: atIndex:設(shè)置參數(shù)

rac_argumentAtIndex取某個參數(shù)

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

8、NSNotificationCenter

rac_addObserverForName: object:注冊通知

9互拾、NSObject

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

rac_descriptiondebug用

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

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

rac_signalForSelector:代替某個方法

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

9歪今、NSOrderedSet

rac_sequence不解釋

10、NSSet

rac_sequence不解釋

11颜矿、NSString

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

rac_keyPathByDeletingLastKeyPathComponent刪除路徑最后一部分

rac_keyPathByDeletingFirstKeyPathComponent刪除路徑第一部分

rac_sequence不解釋 (character)

rac_readContentsOfURL: usedEncoding: scheduler:比之OC多線程調(diào)用

12寄猩、NSURLConnection

rac_sendAsynchronousRequest發(fā)起異步請求

13、NSUserDefaults

rac_channelTerminalForKey用于雙向綁定骑疆,此乃一端

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末田篇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子箍铭,更是在濱河造成了極大的恐慌泊柬,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诈火,死亡現(xiàn)場離奇詭異兽赁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)冷守,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門刀崖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拍摇,你說我怎么就攤上這事亮钦。” “怎么了授翻?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵或悲,是天一觀的道長。 經(jīng)常有香客問我堪唐,道長巡语,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任淮菠,我火速辦了婚禮男公,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘合陵。我一直安慰自己枢赔,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布拥知。 她就那樣靜靜地躺著踏拜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪低剔。 梳的紋絲不亂的頭發(fā)上速梗,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天肮塞,我揣著相機(jī)與錄音,去河邊找鬼姻锁。 笑死枕赵,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的位隶。 我是一名探鬼主播拷窜,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼涧黄!你這毒婦竟也來了篮昧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤弓熏,失蹤者是張志新(化名)和其女友劉穎恋谭,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挽鞠,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡疚颊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了信认。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片材义。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嫁赏,靈堂內(nèi)的尸體忽然破棺而出其掂,到底是詐尸還是另有隱情,我是刑警寧澤潦蝇,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布款熬,位于F島的核電站,受9級特大地震影響攘乒,放射性物質(zhì)發(fā)生泄漏贤牛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一则酝、第九天 我趴在偏房一處隱蔽的房頂上張望殉簸。 院中可真熱鬧,春花似錦沽讹、人聲如沸般卑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝠检。三九已至,卻和暖如春挚瘟,著一層夾襖步出監(jiān)牢的瞬間叹谁,已是汗流浹背迟杂。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留本慕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓侧漓,卻偏偏與公主長得像锅尘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子布蔗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

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