RAC信号

1、 信号量的合并CombineLatest

信号量的合并说白了就是把两个水管中的水合成一个水管中的水。但这个合并有个限制,当两个水管中都有水的时候才合并。如果一个水管中有水,另一个水管中没有水,那么有水的水管会等到无水的水管中来水了,在与这个水管中的水按规则进行合并。下面这个实例就是把两个信号量进行合并

  • 首先创建两个自定义的信号量letters和numbers

  • 把两个信号量通过combineLatest函数进行合并,combineLatest说明要合并信号量中最后发送的值

  • reduce块中是合并规则:把numbers中的值拼接到letters信号量中的值后边。

  • 经过上面的步骤就是创建所需的相关信号量,也就是相当于架好运输的管道。接着我们就可以通过sendNext方法来往信号量中发送值了,也就是往管道中进行灌水

- (void) combiningLatest{
 RACSubject *letters = [RACSubject subject];
 RACSubject *numbers = [RACSubject subject];

[[RACSignal
   combineLatest:@[letters,numbers]
   reduce:^(NSString*letter,NSString *number){
         return [letter stringByAppendingString:number];
        }]
  subscribeNext:^(NSString*x) {
          NSLog(@"%@", x);
        }];

 // 输出结果B1 C1 C2
[letters sendNext:@"A"];
[letters sendNext:@"B"];
[numbers sendNext:@"1"];
[letters sendNext:@"C"];
[numbers sendNext:@"2"];
}

你可能感兴趣的:(RAC信号)