本文適合有必定RAC基礎的童鞋作不時的查詢,因此本文不作詳細解釋。html
1、常見類
一、RACSiganl 信號類。ios
- RACEmptySignal :空信號,用來實現 RACSignal 的 +empty 方法;
- RACReturnSignal :一元信號,用來實現 RACSignal 的 +return: 方法;
- RACDynamicSignal :動態信號,使用一個 block - 來實現訂閱行爲,咱們在使用 RACSignal 的 +createSignal: 方法時建立的就是該類的實例;
- RACErrorSignal :錯誤信號,用來實現 RACSignal 的 +error: 方法;
- RACChannelTerminal :通道終端,表明 RACChannel 的一個終端,用來實現雙向綁定。
二、RACSubscriber 訂閱者數組
三、RACDisposable 用於取消訂閱或者清理資源,當信號發送完成或者發送錯誤的時候,就會自動觸發它。多線程
- RACSerialDisposable :做爲 disposable 的容器使用,能夠包含一個 disposable 對象,而且容許將這個 disposable 對象經過原子操做交換出來;
- RACKVOTrampoline :表明一次 KVO 觀察,而且能夠用來中止觀察;
- RACCompoundDisposable :它能夠包含多個 disposable 對象,而且支持手動添加和移除 disposable 對象
- RACScopedDisposable :當它被 dealloc 的時候調用自己的 -dispose 方法。
四、RACSubject 信號提供者,本身能夠充當信號,又能發送信號。異步
- RACGroupedSignal :分組信號,用來實現 RACSignal 的分組功能;
- RACBehaviorSubject :重演最後值的信號,當被訂閱時,會向訂閱者發送它最後接收到的值;
- RACReplaySubject :重演信號,保存發送過的值,當被訂閱時,會向訂閱者從新發送這些值。
五、RACTuple 元組類,相似NSArray,用來包裝值.ide
六、RACSequence RAC中的集合類ui
七、RACCommand RAC中用於處理事件的類,能夠把事件如何處理,事件中的數據如何傳遞,包裝到這個類中,他能夠很方便的監控事件的執行過程。線程
八、RACMulticastConnection 用於當一個信號,被屢次訂閱時,爲了保證建立信號時,避免屢次調用建立信號中的block,形成反作用,可使用這個類處理。debug
九、RACScheduler RAC中的隊列,用GCD封裝的。雙向綁定
- RACImmediateScheduler :當即執行調度的任務,這是惟一一個支持同步執行的調度器;
- RACQueueScheduler :一個抽象的隊列調度器,在一個 GCD 串行列隊中異步調度全部任務;
- RACTargetQueueScheduler :繼承自 RACQueueScheduler ,在一個以一個任意的 GCD 隊列爲 target 的串行隊列中異步調度全部任務;
- RACSubscriptionScheduler :一個只用來調度訂閱的調度器。
2、常見用法
- rac_signalForSelector : 代替代理
- rac_valuesAndChangesForKeyPath: KVO
- rac_signalForControlEvents:監聽事件
- rac_addObserverForName 代替通知
- rac_textSignal:監聽文本框文字改變
- rac_liftSelector:withSignalsFromArray:Signals:當傳入的Signals(信號數組),每個signal都至少sendNext過一次,就會去觸發第一個selector參數的方法。
3、常見宏
- RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用於給某個對象的某個屬性綁定
- RACObserve(self, name) :監聽某個對象的某個屬性,返回的是信號。
- @weakify(Obj)和@strongify(Obj)
- RACTuplePack :把數據包裝成RACTuple(元組類)
- RACTupleUnpack:把RACTuple(元組類)解包成對應的數據
- RACChannelTo 用於雙向綁定的一個終端
4、經常使用操做方法
- 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節流:當某個信號發送比較頻繁時,可使用節流,在某一段時間不發送信號內容,過了一段時間獲取信號的最新內容發出。
5、UI - Category(經常使用匯總)
一、rac_prepareForReuseSignal: 須要複用時用 相關UI: MKAnnotationView、UICollectionReusableView、UITableViewCell、UITableViewHeaderFooterView
二、rac_buttonClickedSignal:點擊事件觸發信號 相關UI:UIActionSheet、UIAlertView
三、rac_command:button類、刷新類相關命令替換 相關UI:UIBarButtonItem、UIButton、UIRefreshControl
四、rac_signalForControlEvents: control event 觸發 相關UI:UIControl
五、rac_gestureSignal UIGestureRecognizer 事件處理信號 相關UI:UIGestureRecognizer
六、rac_imageSelectedSignal 選擇圖片的信號 相關UI:UIImagePickerController
七、rac_textSignal 相關UI:UITextField、UITextView
八、可實現雙向綁定的相關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
6、Foundation - Category (經常使用匯總)
- 一、NSArray
- 二、NSData
- rac_readContentsOfURL: options: scheduler: 比oc多出線程設置
- 三、NSDictionary
- rac_sequence 不解釋
- rac_keySequence key 集合
- rac_valueSequence value 集合
- 四、NSEnumerator
- 五、NSFileHandle
- rac_readInBackground 見名知意
- 六、NSIndexSet
- 七、NSInvocation
- rac_setArgument: atIndex: 設置參數
- rac_argumentAtIndex 取某個參數
- rac_returnValue 所關聯方法的返回值
- 八、NSNotificationCenter
- rac_addObserverForName: object:註冊通知
- 九、NSObject
- rac_willDeallocSignal 對象銷燬時發動的信號
- rac_description debug用
- rac_observeKeyPath: options: observer: block:監聽某個事件
- rac_liftSelector: withSignals: 所有信號都next在執行
- rac_signalForSelector: 代替某個方法
- rac_signalForSelector:(SEL)selector fromProtocol:代替代理
- 九、NSOrderedSet
- 十、NSSet
- 十一、NSString
- rac_keyPathComponents 獲取一個路徑全部的部分
- rac_keyPathByDeletingLastKeyPathComponent 刪除路徑最後一部分
- rac_keyPathByDeletingFirstKeyPathComponent 刪除路徑第一部分
- rac_sequence 不解釋 (character)
- rac_readContentsOfURL: usedEncoding: scheduler: 比之OC多線程調用
- 十二、NSURLConnection
- rac_sendAsynchronousRequest 發起異步請求
- 1三、NSUserDefaults
- rac_channelTerminalForKey 用於雙向綁定,此乃一端
本文由做者 王隆帥 編寫,轉載請保留版權網址,感謝您的理解與分享,讓生活變的更美好!
7、參考資料
www.cocoachina.com/ios/2016010… www.jianshu.com/p/d262f2c55… www.jianshu.com/p/da9698064… mp.weixin.qq.com/s?__biz=MzA… www.jianshu.com/p/87ef6720a… www.jianshu.com/p/e10e5ca41… www.th7.cn/Program/IOS…