您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页RAC核心方法bind

RAC核心方法bind

来源:二三四教育网

核心方法bind

 //1.创建信号
    RACSubject *subject = [RACSubject subject];
    //2.绑定信号
    RACSignal *bindSignal = [subject bind:^RACStreamBindBlock{
        return ^RACSignal *(id value, BOOL *stop) {
            NSLog(@"接收到参数:%@",value);
            value = @321;
            //block调用时刻:只要源信号发送了数据就会调用
            //block作用:处理源信号内容
            //返回信号,不能为nil
            //创建空信号 [[RACSignal alloc]init]或者包装好的[RACSignal empty]
            //需要把源信号的值经过处理后的值包装成信号发送出去
            return [RACReturnSignal return:value];
        };
    }];
    //3.订阅绑定信号
    [bindSignal subscribeNext:^(id x) {
     //当return信号被订阅的时候,就会调用这个block
        NSLog(@"处理过的参数%@",x);
    }];
    //4.发送数据
    [subject sendNext:@"123"];

bind底层实现

 //1.创建信号RACSubject            ===>  _subscribers
    //2.绑定信号bind                  ===>  block
    //3.创建绑定信号bindSignal         ===>  didSubscribe
    //4.订阅绑定信号(RACDynamicSignal)
    //5.创建一个订阅者(RACSubscriber)  ===>   nextBlock
    //6.执行didSubscribe
    //7.执行block                    ===>   bindingBlock
    //8.订阅源信号(RACSubject)
    //9.创建订阅者(RACSubscriber)     ===>    nextBlock  1.id signal = bindingBlock(x, &stop);   2.addSignal(signal)
    //                                      errorBlock
    //                                      completedBlock
    //10.源信号发送数据
    //11.执行订阅者的nextBlock
    //12.执行bindingBlock
    //13.创建信号(RACReturnSignal)
    //14.订阅信号(RACReturnSignal)    ===>    nextBlock  1.subscriber sendNext

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务