一柱恤、RAC使用基礎(chǔ)認(rèn)知
RAC編程思想:響應(yīng)式編程+函數(shù)式編程
????????在iOS中楔壤,類之間的傳值,無非就是block肌稻、delegate代理清蚀、KVO、notification這幾種方法爹谭。在RAC中枷邪,具備替代KVO、delegate代理诺凡、通知东揣、UITarget践惑、計時器timer等各種方法。依據(jù)響應(yīng)式函數(shù)編程嘶卧,RAC方法本身更加簡明尔觉,通過提供信號的方式(RACSignal)來捕捉當(dāng)前以及未來的屬性值變化,可直接在block中將邏輯代碼加入其中芥吟,使得代碼緊湊侦铜,更加直觀。
首先導(dǎo)入RAC頭文件<ReactiveObjC.h>
//1.創(chuàng)建信號 創(chuàng)建信號對象,然后創(chuàng)建一個可變數(shù)組!? ?
RACSubject *subject = [RACSubject subject];? ?
//2.訂閱信號 創(chuàng)建一個訂閱者 將Block保存到訂閱者中,將訂閱者保存到上面的數(shù)組中? ?
[subject subscribeNext:^(id? _Nullable x) {? ? ? ?
NSLog(@"%@", x);? ?
}];? ?
//3.發(fā)送信號 遍歷信號對象中的數(shù)組,去除訂閱對象!調(diào)用訂閱對象中的Block 執(zhí)行!!? ?
[subject sendNext:@"紫蘇"];
運(yùn)行一下看看效果
二钟鸵、RAC常見使用場景
1钉稍、替換代理認(rèn)知
下面以外界對button的點(diǎn)擊事件作出響應(yīng)為例來說明下怎么使用RAC替換代理。
在設(shè)置代理的地方訂閱信號:
上邊兩個訂閱信號除了包括button點(diǎn)擊事件棺耍,區(qū)別在于其中訂閱sendData:拿到的參數(shù)x為button這個對象贡未,而訂閱sendArr:接收到的參數(shù)為數(shù)組。
2.替換KVO和target認(rèn)知
首先導(dǎo)入RAC分類文件蒙袍,#import?<NSObject+RACKVOWrapper.h>
下圖第一行代碼方法一用來實(shí)現(xiàn)監(jiān)聽觀察zsView的frame變化羞秤,如果想要主動移除觀察者需要存儲RAC方法返回對象disposable,然后使用disposable調(diào)用dispose方法主動移除RAC訂閱信號(同KVO移除觀察者)左敌。但RAC真正的用法強(qiáng)大之處在于接下來的兩個示例用法(見下圖)瘾蛋,移除RAC訂閱信號同方法一。(注意:RAC不需要設(shè)置觀察者矫限,因?yàn)镽AC有回調(diào)的block哺哼,不需要觀察者實(shí)現(xiàn)回調(diào)方法)