本文適合有一定RAC基礎的童鞋做不時的查詢有勾,所以本文不做詳細解釋望伦。
作為一個有節(jié)操的伸手黨:原文
一林说、常見類
1、RACSiganl 信號類屯伞。
RACEmptySignal :空信號腿箩,用來實現 RACSignal 的 +empty 方法;
RACReturnSignal :一元信號劣摇,用來實現 RACSignal 的 +return: 方法珠移;
RACDynamicSignal :動態(tài)信號,使用一個 block - 來實現訂閱行為末融,我們在使用 RACSignal 的 +createSignal: 方法時創(chuàng)建的就是該類的實例钧惧;
RACErrorSignal :錯誤信號,用來實現 RACSignal 的 +error: 方法勾习;
RACChannelTerminal :通道終端浓瞪,代表 RACChannel 的一個終端,用來實現雙向綁定巧婶。
2乾颁、RACSubscriber 訂閱者
3、RACDisposable 用于取消訂閱或者清理資源艺栈,當信號發(fā)送完成或者發(fā)送錯誤的時候英岭,就會自動觸發(fā)它。
RACSerialDisposable :作為 disposable 的容器使用湿右,可以包含一個 disposable 對象诅妹,并且允許將這個 disposable 對象通過原子操作交換出來;
RACKVOTrampoline :代表一次 KVO 觀察毅人,并且可以用來停止觀察漾唉;
RACCompoundDisposable :它可以包含多個 disposable 對象,并且支持手動添加和移除 disposable 對象
RACScopedDisposable :當它被 dealloc 的時候調用本身的 -dispose 方法堰塌。
4、RACSubject 信號提供者分衫,自己可以充當信號场刑,又能發(fā)送信號。
RACGroupedSignal :分組信號,用來實現 RACSignal 的分組功能牵现;
RACBehaviorSubject :重演最后值的信號铐懊,當被訂閱時,會向訂閱者發(fā)送它最后接收到的值瞎疼;
RACReplaySubject :重演信號科乎,保存發(fā)送過的值,當被訂閱時贼急,會向訂閱者重新發(fā)送這些值茅茂。
5、RACTuple 元組類,類似NSArray,用來包裝值.
6太抓、RACSequence RAC中的集合類
7空闲、RACCommand RAC中用于處理事件的類,可以把事件如何處理,事件中的數據如何傳遞走敌,包裝到這個類中碴倾,他可以很方便的監(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(信號數組)坝咐,每一個signal都至少sendNext過一次循榆,就會去觸發(fā)第一個selector參數的方法。
三墨坚、常見宏
RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于給某個對象的某個屬性綁定
RACObserve(self, name) :監(jiān)聽某個對象的某個屬性,返回的是信號秧饮。
@weakify(Obj)和@strongify(Obj)
RACTuplePack :把數據包裝成RACTuple(元組類)
RACTupleUnpack:把RACTuple(元組類)解包成對應的數據
RACChannelTo 用于雙向綁定的一個終端
四、常用操作方法
flattenMap map 用于把源信號內容映射成新的內容。
concat 組合 按一定順序拼接信號盗尸,當多個信號發(fā)出的時候柑船,有順序的接收信號
then 用于連接兩個信號,當第一個信號完成泼各,才會連接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鸦致、可實現雙向綁定的相關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: 設置參數
rac_argumentAtIndex 取某個參數
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ā)起異步請求`