加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

OC+RAC(六) 核心方法bind

发布时间:2020-12-14 04:31:59 所属栏目:大数据 来源:网络整理
导读:-( void )_test6{ RACSignal *signal = [RACSignal createSignal:^RACDisposable *( id RACSubscriber subscriber) { [subscriber sendNext: @" first value " ]; [subscriber sendNext: @" second value " ]; [subscriber sendNext: @" third value " ]; [s
-(void)_test6{
    RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
        [subscriber sendNext:@"first value"];
        [subscriber sendNext:@"second value"];
        [subscriber sendNext:@"third value"];
        [subscriber sendCompleted];
        return nil;
    }];
    
    RACSignal *bindSignal = [signal bind:^RACSignalBindBlock{
        
        return  ^RACSignal *(id value,BOOL *stop) {
            
            NSString *oValue = value;
            if ([oValue isEqualToString:@"first value"]) {
                return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
                    [subscriber sendNext:@"first value bind after"];
                    [subscriber sendCompleted];
                    return nil;
                }];
            }
            
            if ([oValue isEqualToString:@"second value"]) {
                *stop = YES;
                return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
                    [subscriber sendNext:@"second value bind after"];
                    [subscriber sendCompleted];
                    return nil;
                }];
            }
            
            if ([oValue isEqualToString:@"third value"]) {
                return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
                    [subscriber sendNext:@"third value bind after"];
                    [subscriber sendCompleted];
                    return nil;
                }];
            }
            
            return nil;
        };
    }];
    
    [bindSignal subscribeNext:^(id  _Nullable x) {
        
        NSLog(@"x====%@",x);
    }];
    
}
再来一个例子:


-(void)_test7{
    //1.创建信号
    RACSubject * subject = [RACSubject subject];
    
    //2.绑定信号
    RACSignal * bindSignal = [subject bind:^RACSignalBindBlock _Nonnull{
        
        return ^RACSignal * (id value,BOOL *stop){
            NSLog(@"%@",value);
            return [RACReturnSignal return:[NSString stringWithFormat:@"一顿操作猛如虎 %@",value]];
            
        };
    }];
    
    //3.订阅信号
    [bindSignal subscribeNext:^(id  _Nullable x) {
        NSLog(@"绑定接收到!! %@",x);
    }];
    
    //4.发送
    [subject sendNext:@"发送原始的数据"];
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读