iOS ReactiveCocoa 最全常用API整理(可做為手冊查詢)

王隆帥發表於2016-07-20

本文適合有一定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:代替代理
  • 9、NSOrderedSet
    • rac_sequence 不解釋
  • 10、NSSet
    • rac_sequence 不解釋
  • 11、NSString
    • rac_keyPathComponents 獲取一個路徑所有的部分
    • rac_keyPathByDeletingLastKeyPathComponent 刪除路徑最後一部分
    • rac_keyPathByDeletingFirstKeyPathComponent 刪除路徑第一部分
    • rac_sequence 不解釋 (character)
    • rac_readContentsOfURL: usedEncoding: scheduler: 比之OC多執行緒呼叫
  • 12、NSURLConnection
    • rac_sendAsynchronousRequest 發起非同步請求
  • 13、NSUserDefaults
    • rac_channelTerminalForKey 用於雙向繫結,此乃一端

本文由作者 王隆帥 編寫,轉載請保留版權網址,感謝您的理解與分享,讓生活變的更美好!

七、參考資料

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…

相關文章