rac_liftSelector

文章系列
《ReactiveCocoa 概述》
《RACSignal》
《RACDisposable》
《RACSubject、RACReplaySubject(内附冷信号和热信号的区别)》
《集合RACTuple、RACSequence》
《RAC 中的通知、代理、KVO, 基本事件、方法的监听》
《rac_liftSelector》
《RACMulticastConnection》
《RACCommand》
《RAC - 核心方法bind》
《RAC - 定时器》
《RACScheduler》
《RAC - 点击获取验证码 demo》
《RAC - 映射(Map & flattenMap)》
《RAC信号操作解释合集》
《RAC - 信号的生命周期》

当一个界面中有多次请求时,需要保证全部都请求完成,才搭建(刷新)界面,这时需要用到该方法.

  • 代码分析:
- (void)rac_liftSelectorTest {
    
    RACSignal *firstSignal = [RACSignal createSignal:^RACDisposable * _Nullable(id  _Nonnull subscriber) {
       
        NSLog(@"模拟第一个网络请求");
        [subscriber sendNext:@"第一次获取到的网络数据"];
        return nil;
    }];
    
    RACSignal *secondSignal = [RACSignal createSignal:^RACDisposable * _Nullable(id  _Nonnull subscriber) {
       
        NSLog(@"模拟第二个网络请求");
        [subscriber sendNext:@"第二次获取到的网络数据"];
        return nil;
    }];
    
    RACSignal *thirdSignal = [RACSignal createSignal:^RACDisposable * _Nullable(id  _Nonnull subscriber) {
       
        NSLog(@"模拟第三个网络请求");
        [subscriber sendNext:@"第三次获取到的网络数据"];
        return nil;
    }];
    
    // 方法updateUIWithData1...的参数,对应每个信号发送的数据
    [self rac_liftSelector:@selector(updateUIWithData1:Data2:Data3:) withSignalsFromArray:@[firstSignal, secondSignal, thirdSignal]];
}

/// 监听多个模块全部执行完成
/// 方法的参数必须与监听的信号一一对应
/// 方法的参数就是每个信号发送的数据
/// @param data1 对应上面firstSignal 监听的信号发送的数据
/// @param data2 对应上面secondSignal 监听的信号发送的数据
/// @param data3 对应上面thirdSignal 监听的信号发送的数据
- (void)updateUIWithData1:(NSString *)data1 Data2:(NSString *)data2 Data3:(NSString *)data3 {
    
    NSLog(@"更新UI:%@-%@-%@", data1, data2, data3);
}

.End

你可能感兴趣的:(rac_liftSelector)