標籤:方便 imm schedule role active 串列 deb 同步 defaults
本文適合有一定RAC基礎的童鞋做不時的查詢,所以本文不做詳細解釋。
一、常見類
1、RACSiganl 訊號類。
RACEmptySignal :空訊號,用來實現 RACSignal 的 +empty 方法;
RACReturnSignal :一元訊號,用來實現 RACSignal 的 +return: 方法;
RACDynamicSignal :動態訊號,使用一個 block - 來實現訂閱行為,我們在使用 RACSignal 的 +createSignal: 方法時建立的就是該類的執行個體;
RACErrorSignal :錯誤訊號,用來實現 RACSignal 的 +error: 方法;
RACChannelTerminal :通道終端,代表 RACChannel 的一個終端,用來實現雙向繫結。
2、RACSubscriber 訂閱者
3、RACDisposable 用於取消訂閱或者清理資源,當訊號發送完成或者發送錯誤的時候,就會自動觸發它。
RACSerialDisposable :作為 disposable 的容器使用,可以包含一個 disposable 對象,並且允許將這個 disposable 對象通過原子操作交換出來;
RACKVOTrampoline :代表一次 KVO 觀察,並且可以用來停止觀察;
RACCompoundDisposable :它可以包含多個 disposable 對象,並且支援手動添加和移除 disposable 對象
RACScopedDisposable :當它被 dealloc 的時候調用本身的 -dispose 方法。
4、RACSubject 訊號提供者,自己可以充當訊號,又能發送訊號。
RACGroupedSignal :分組訊號,用來實現 RACSignal 的分組功能;
RACBehaviorSubject :重演最後值的訊號,當被訂閱時,會向訂閱者發送它最後接收到的值;
RACReplaySubject :重演訊號,儲存發送過的值,當被訂閱時,會向訂閱者重新發送這些值。
5、RACTuple 元組類,類似NSArray,用來封裝值.
6、RACSequence RAC中的集合類
7、RACCommand RAC中用於處理事件的類,可以把事件如何處理,事件中的資料如何傳遞,封裝到這個類中,他可以很方便的監控事件的執行過程。
8、RACMulticastConnection 用於當一個訊號,被多次訂閱時,為了保證建立訊號時,避免多次調用建立訊號中的block,造成副作用,可以使用這個類處理。
9、RACScheduler RAC中的隊列,用GCD封裝的。
RACImmediateScheduler :立即執行調度的任務,這是唯一一個支援同步執行的調度器;
RACQueueScheduler :一個抽象的隊列調度器,在一個 GCD 串列列隊中非同步調度所有任務;
RACTargetQueueScheduler :繼承自 RACQueueScheduler ,在一個以一個任意的 GCD 隊列為 target 的串列隊列中非同步調度所有任務;
RACSubscriptionScheduler :一個只用來調度訂閱的調度器。
二、常見用法
rac_signalForSelector : 代替代理
rac_valuesAndChangesForKeyPath: KVO
rac_signalForControlEvents:監聽事件
rac_addObserverForName 代替通知
rac_textSignal:監聽文字框文字改變
rac_liftSelector:withSignalsFromArray:Signals:當傳入的Signals(訊號數組),每一個signal都至少sendNext過一次,就會去觸發第一個selector參數的方法。
三、常見宏
RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用於給某個對象的某個屬性綁定
RACObserve(self, name) :監聽某個對象的某個屬性,返回的是訊號。
@weakify(Obj)和@strongify(Obj)
RACTuplePack :把資料封裝成RACTuple(元組類)
RACTupleUnpack:把RACTuple(元組類)解包成對應的資料
RACChannelTo 用於雙向繫結的一個終端
四、常用操作方法
flattenMap map 用於把源訊號內容映射成新的內容。
concat 組合 按一定順序拼接訊號,當多個訊號發出的時候,有順序的接收訊號
then 用於串連兩個訊號,當第一個訊號完成,才會串連then返回的訊號。
merge 把多個訊號合并為一個訊號,任何一個訊號有新值的時候就會調用
zipWith 把兩個訊號壓縮成一個訊號,只有當兩個訊號同時發出訊號內容時,並且把兩個訊號的內容合并成一個元組,才會觸發壓縮流的next事件。
combineLatest:將多個訊號合并起來,並且拿到各個訊號的最新的值,必須每個合并的signal至少都有過一次sendNext,才會觸發合并的訊號。
reduce彙總:用於訊號發出的內容是元組,把訊號發出元組的值彙總成一個值
filter:過濾訊號,使用它可以擷取滿足條件的訊號.
ignore:忽略完某些值的訊號.
distinctUntilChanged:當上一次的值和當前的值有明顯的變化就會發出訊號,否則會被忽略掉。
take:從開始一共取N次的訊號
takeLast:取最後N次的訊號,前提條件,訂閱者必須調用完成,因為只有完成,就知道總共有多少訊號.
takeUntil:(RACSignal *):擷取訊號直到某個訊號執行完成
skip:(NSUInteger):跳過幾個訊號,不接受。
switchToLatest:用於signalOfSignals(訊號的訊號),有時候訊號也會發出訊號,會在signalOfSignals中,擷取signalOfSignals發送的最新訊號。
doNext: 執行Next之前,會先執行這個Block
doCompleted: 執行sendCompleted之前,會先執行這個Block
timeout:逾時,可以讓一個訊號在一定的時間後,自動報錯。
interval 定時:每隔一段時間發出訊號
delay 延遲發送next。
retry重試 :只要失敗,就會重新執行建立訊號中的block,直到成功.
replay重放:當一個訊號被多次訂閱,反覆播放內容
throttle節流:當某個訊號發送比較頻繁時,可以使用節流,在某一段時間不發送訊號內容,過了一段時間擷取訊號的最新內容發出。
五、UI - Category(常用匯總)
1、rac_prepareForReuseSignal: 需要複用時用
相關UI: MKAnnotationView、UICollectionReusableView、UITableViewCell、UITableViewHeaderFooterView
2、rac_buttonClickedSignal:點擊事件觸發訊號
相關UI:UIActionSheet、UIAlertView
3、rac_command:button類、重新整理類相關命令替換
相關UI:UIBarButtonItem、UIButton、UIRefreshControl
4、rac_signalForControlEvents: control event 觸發
相關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 所關聯方法的傳回值
8、NSNotificationCenter
rac_addObserverForName: object:註冊通知
9、NSObject
rac_willDeallocSignal 對象銷毀時發動的訊號
rac_description debug用
rac_observeKeyPath: options: observer: block:監聽某個事件
rac_liftSelector: withSignals: 全部訊號都next在執行
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 發起非同步請求
14、NSUserDefaults
rac_channelTerminalForKey 用於雙向繫結,此乃一
http://www.cocoachina.com/ios/20160729/17236.html
iOS ReactiveCocoa 最全常用API整理(可做為手冊查詢)