RAC基礎常用方法查詢

本文適合有一定RAC基礎的童鞋做不時的查詢,所以本文不做詳細解釋。如想系統了解學習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 用于雙向綁定

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379

推薦閱讀更多精彩內容