美文网首页
ReactiveObjC常用使用

ReactiveObjC常用使用

作者: 文子飞_ | 来源:发表于2020-12-13 12:43 被阅读0次

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];
}

相关文章

网友评论

      本文标题:ReactiveObjC常用使用

      本文链接:https://www.haomeiwen.com/subject/hznugktx.html