美文网首页
(八)、iOS RAC -RACSignal 中 bind 的用

(八)、iOS RAC -RACSignal 中 bind 的用

作者: Buddha_like | 来源:发表于2019-03-25 17:37 被阅读0次
        /**
     RACSignal的bind的主要过程如下:
     
     创建一个RACSignal的数组,把初始signal添加进去,如果该数组为空,发送complete;数组中任意的signal出现error,都会发送error;数组中   任意的signal出现complete,都会让该数组删除该signal。
     订阅初始Signal,获得初始Signal中所有的value,error,complete信息。
     接受到value之后,通过RACStreamBindBlock这个block执行获得一个新的Signal,将这个Signal添加到数组中,并订阅这个signal。这个RACStreamBindBlock执行中会带一个BOOL值,如果BOOL值变成YES,初始Signal的订阅就结束了。
     //参考网址:https://blog.csdn.net/chenyin10011991/article/details/52383433
     */
     
    - (void)bindOne {
        
        [self.view addSubview:self.textField];
        [[_textField.rac_textSignal bind:^RACSignalBindBlock {
    
            /**
             什么时候调用:
             block作用:表示绑定了一个信号.
             */
            return ^RACSignal *(id value, BOOL *stop){
                /**
                 什么时候调用block:当信号有新的值发出,就会来到这个block。
                 block作用:做返回值的处理
                 做好处理,通过信号返回出去.
                 */
                return [RACReturnSignal return:[NSString stringWithFormat:@"输出:%@",value]];
            };
        }] subscribeNext:^(id x) {
            NSLog(@"%@",x);
        }];
    }
    
    - (UITextField *)textField {
        
        if (!_textField) {
            _textField = [[UITextField alloc] init];
            _textField.frame = CGRectMake(50, 200, 250, 60);
            _textField.backgroundColor = [UIColor grayColor];
        }
        return _textField;
    }

    相关文章

      网友评论

          本文标题:(八)、iOS RAC -RACSignal 中 bind 的用

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