一、響應(yīng)式編程就是實(shí)時響應(yīng)某個事件
// 創(chuàng)建信號
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) {
NSLog(@"Hello");
// 發(fā)送信號
[subscriber sendNext:@"This is RAC"];
return nil;
}];
// 訂閱信號
[signal subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];
二、RAC很強(qiáng)大,一行代碼搞定以前的事件監(jiān)聽
舉幾個實(shí)際使用案例
- TargetAction轉(zhuǎn)Block
①UITextField(實(shí)時監(jiān)聽輸入框內(nèi)容)
[[self.textField rac_textSignal] subscribeNext:^(NSString * _Nullable x) {
NSLog(@"%@", x);
}];
②UIButton(Button點(diǎn)擊事件)
[[self.button rac_signalForControlEvents:(UIControlEventTouchUpInside)] subscribeNext:^(__kindof UIControl * _Nullable x) {
NSLog(@"%@",x);
}];
- 通知轉(zhuǎn)Block
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIApplicationDidBecomeActiveNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {
NSLog(@"%@",x);
}];
三、注意事項(xiàng):
RAC使用@weakify(self);和@strongify(self);來避免block循環(huán)引用
@weakify(self);
[[self.textField rac_textSignal] subscribeNext:^(NSString * _Nullable x) {
@strongify(self);
self.textField.text = @"Hello";
}];
文章系列
《RACSignal 》
《RACDisposable》
《RACSubject、RACReplaySubject》
《iOS RAC - 基本用法》
《iOS RAC - 定時器》
《iOS RAC - RACMulticastConnection》
《iOS RAC - RACCommand》
《iOS RAC - 核心方法bind》
《iOS RAC - 集合RACTuple、RACSequence》
《iOS RAC - rac_leftSelector》
《iOS RAC - 映射》
《iOS RAC - 過濾》
《iOS RAC - 登錄頁面,MVVM》
作者:Codepgq
鏈接:http://www.itdecent.cn/p/cd4031fbf8ff
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。