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

本文適合有一定RAC基礎(chǔ)的童鞋做不時的查詢,所以本文不做詳細解釋。

一、常見類

  • 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 用于取消訂閱或者清理資源,當信號發(fā)送完成或者發(fā)送錯誤的時候,就會自動觸發(fā)它。
    • RACSerialDisposable :作為 disposable 的容器使用,可以包含一個 disposable 對象,并且允許將這個 disposable 對象通過原子操作交換出來;
    • RACKVOTrampoline :代表一次 KVO 觀察,并且可以用來停止觀察;
    • RACCompoundDisposable :它可以包含多個 disposable 對象,并且支持手動添加和移除 disposable 對象
    • RACScopedDisposable :當它被 dealloc 的時候調(diào)用本身的 -dispose 方法。
  • 4、RACSubject 信號提供者,自己可以充當信號,又能發(fā)送信號。
    • RACGroupedSignal :分組信號,用來實現(xiàn) RACSignal 的分組功能;
    • RACBehaviorSubject :重演最后值的信號,當被訂閱時,會向訂閱者發(fā)送它最后接收到的值;
    • RACReplaySubject :重演信號,保存發(fā)送過的值,當被訂閱時,會向訂閱者重新發(fā)送這些值。
  • 5、RACTuple 元組類,類似NSArray,用來包裝值.
  • 6、RACSequence RAC中的集合類
  • 7、RACCommand RAC中用于處理事件的類,可以把事件如何處理,事件中的數(shù)據(jù)如何傳遞,包裝到這個類中,他可以很方便的監(jiān)控事件的執(zhí)行過程。
  • 8、RACMulticastConnection 用于當一個信號,被多次訂閱時,為了保證創(chuàng)建信號時,避免多次調(diào)用創(chuàng)建信號中的block,造成副作用,可以使用這個類處理。
  • 9、RACScheduler RAC中的隊列,用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:當傳入的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(元組類)解包成對應的數(shù)據(jù)
  • RACChannelTo 用于雙向綁定的一個終端

四、常用操作方法

  • flattenMap map 用于把源信號內(nèi)容映射成新的內(nèi)容。
  • concat 組合 按一定順序拼接信號,當多個信號發(fā)出的時候,有順序的接收信號
  • then 用于連接兩個信號,當?shù)谝粋€信號完成,才會連接then返回的信號。
  • merge 把多個信號合并為一個信號,任何一個信號有新值的時候就會調(diào)用
  • zipWith 把兩個信號壓縮成一個信號,只有當兩個信號同時發(fā)出信號內(nèi)容時,并且把兩個信號的內(nèi)容合并成一個元組,才會觸發(fā)壓縮流的next事件。
  • combineLatest:將多個信號合并起來,并且拿到各個信號的最新的值,必須每個合并的signal至少都有過一次sendNext,才會觸發(fā)合并的信號。
  • reduce聚合:用于信號發(fā)出的內(nèi)容是元組,把信號發(fā)出元組的值聚合成一個值

  • filter:過濾信號,使用它可以獲取滿足條件的信號.
  • ignore:忽略完某些值的信號.
  • distinctUntilChanged:當上一次的值和當前的值有明顯的變化就會發(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重放:當一個信號被多次訂閱,反復播放內(nèi)容
  • throttle節(jié)流:當某個信號發(fā)送比較頻繁時,可以使用節(jié)流,在某一段時間不發(fā)送信號內(nèi)容,過了一段時間獲取信號的最新內(nèi)容發(fā)出。

五、UI - Category(常用匯總)

  • 1、rac_prepareForReuseSignal: 需要復用時用
    相關(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_gestureSignal UIGestureRecognizer 事件處理信號
    相關(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_keySequence key 集合
    • rac_valueSequence value 集合
  • 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_description debug用
    • 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 用于雙向綁定,此乃一端

本文由簡書作者 王隆帥 編寫,轉(zhuǎn)載請保留版權(quán)網(wǎng)址,感謝您的理解與分享,讓生活變的更美好!

七、參考資料

http://www.cocoachina.com/ios/20160105/14880.html
http://www.itdecent.cn/p/d262f2c55fbe
http://www.itdecent.cn/p/da96980648b6
http://mp.weixin.qq.com/s?__biz=MzA3NTk0NjMyOQ==&mid=2447907541&idx=1&sn=8defb283e2ad6cc76605c3a60118efc5&scene=23&srcid=0630vdTe3PFsuvZOrIhYmNLv#rd
http://www.itdecent.cn/p/87ef6720a096
http://www.itdecent.cn/p/e10e5ca413b7
http://www.th7.cn/Program/IOS/201603/787954.shtml

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容