ReactiveObjC常用使用
/**
* ReactiveObjC常用使用
* 1、监听某个方法有没有被调用:(rac_signalForSelector:@selector()判断有没有调用某个方法)
* 2、代替KVO:RACObserve(self, age);
* 3、监听事件:按钮各种点击事件
* 4、代替通知:[[NSNotificationCenter defaultCenter] rac_addObserverForName: object:];
* 5、监听文本框文字改变:
* 6、RAC绑定信号,给控件赋值:RAC(self.racLabel, text) = self.racTextField.rac_textSignal;
* 7、处理一个界面,多个请求问题
*
*/
处理一个界面,多个请求问题
#pragma mark - 处理一个界面,多个请求问题
- (void)testRACSignals {
RACSignal *hotSignal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
// Request hotData
[subscriber sendNext:@"hotData"];
return nil;
}];
RACSignal *newSignal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
// Request newData
[subscriber sendNext:@"newData"];
return nil;
}];
// @selector当数组所有信号都发送sendNext
// 有几个信号就必须有几个参数,参数就是信号发出值
[self rac_liftSelector:@selector(updateUIWithHotData:newData:) withSignalsFromArray:@[hotSignal, newSignal]];
}
// 当所有信号都发送sendNext,执行。
- (void)updateUIWithHotData:(id)hotData newData:(id)newData {
NSLog(@"hotData = %@ newData = %@", hotData, newData);
}
RACChannel双向数据绑定 适合视图和模型之间的双向绑定
- (void)testRACChannel {
// RACChannel RACChannelTerminal 适合视图和模型之间的双向绑定 / RACChannelTo
[self.testTextField1.rac_newTextChannel subscribe:self.testTextField2.rac_newTextChannel];
[self.testTextField2.rac_newTextChannel subscribe:self.testTextField1.rac_newTextChannel];
}
网友评论