[iOS][RAC]--bind、flattenMap、map进行绑定

绑定应用场景:将一个发送回来信号的数据进行处理后再进行发送,即处理处理原信号内容
bind简单应用
//bind 绑定!
    //1.创建信号
    RACSubject * subject = [RACSubject subject];
    //2.绑定信号
    RACSignal * bindSignal = [subject bind:^RACSignalBindBlock _Nonnull{
        return ^RACSignal * (id value, BOOL *stop){
            //block调用:只要源信号发送数据,就会调用bindBlock
            //block作用:处理原信号内容
            //value:源信号发送的内容
            NSString *value1 = [NSString stringWithFormat:@"处理后的数据:%@",value];
//            NSLog(@"处理后的数据:%@",value);
            //返回信号,不能传nil , 返回空信号 :[RACSignal empty]
            return [RACReturnSignal return:value1];
        };
    }];

    //3.订阅信号
    [bindSignal subscribeNext:^(id  _Nullable x) {
        NSLog(@"接收到 %@",x);
    }];

    //4.发送
    [subject sendNext:@"发送原始的数据"];
Snip20181105_21.png
flattenMap简单应用
//flattenMap 一般用于信号中的信号
    RACSubject * signalOfSignal = [RACSubject subject];
    RACSubject * signal = [RACSubject subject];
    
   [[signalOfSignal flattenMap:^__kindof RACSignal * _Nullable(id  _Nullable value) {
        return value;
    }] subscribeNext:^(id  _Nullable x) {
        NSLog(@"%@",x);
    }];
   
    //发送信号
    [signalOfSignal sendNext:signal];
    [signal sendNext:@"123"];
Map简单应用
//创建信号
    RACSubject * subject = [RACSubject subject];
    
    //绑定
    [[subject map:^id _Nullable(id  _Nullable value) {
        //返回的数据就是需要处理的数据
        return [NSString stringWithFormat:@"处理数据%@",value];
    }] subscribeNext:^(id  _Nullable x) {
        NSLog(@"%@",x);
    }];
    
    //发送数据
    [subject sendNext:@"123"];
    [subject sendNext:@"321"];
Snip20181105_22.png

你可能感兴趣的:([iOS][RAC]--bind、flattenMap、map进行绑定)