函数式编程思想的侵袭–ReactiveCocoa的信号和订阅机制备忘

作者: shaneZhang 分类: ios技术 发布时间: 2017-01-06 15:23

RAC中的信号会有三种值: next error 和 complete. 当一个信号在发送了error和complete之后就不会在发送任何信号值了。可以理解为这个信号就死了。

RAC中对UIKit的大多UI控件都做了一层信号值的处理方式,比如我们最常见的UIButton和UITextField.

当你随时都想知道某一个值的改变时(不管是next、error或者completion),你就会订阅流—一种最常见的signal.使用信号通常都会有副作用.

UITextField的订阅用户输入:


[self.textField.rac_textSignal subscribeNext:^(id x){
    NSLog(@"New Value: %@", x);
}];

RACSignal * validEmailSignal = [self.textField.rac_textSignal map:^id (NSString *value){
    return @([value rangeOfString:@"@"].location != NSNotFound);
}];

// 状态绑定
RAC(self.button, enabled) = validEmailSignal;

RAC(self.textField, textColor) = [validEmailSignal map: ^id (id value){
    if([value boolValue]){
        return [UIColor greenColor];
    }else{
        return [UIColor redColor];
    }
}];

如果觉得我的文章对您有用,请随意打赏。如果有其他问题请联系博主QQ(909491009)或者下方留言!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注