RAC信号

作者: brave723 | 来源:发表于2017-11-09 21:03 被阅读1次

    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信号

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