ReactiveCocoa基础

2017-11-10  本文已影响4人  海的原滋味

1.ReactiveCocoa(函数响应式编程 FRP)

1.面向过程
2 面向对象:万物皆对象
3.链式编程
4.响应式编程:(Reactive Programming)万物皆是流(KVO应用)
5.函数式编程 (Function Programming)

BeeFramework 与ReactiveCocoa 类似的一款响应式开发库

[[self.phoneTextfield.rac_textSignal filter:^BOOL(NSString * _Nullable value) {
        NSString *str = value;
        if ([Public isValidateMobile:str]) {
            return YES;
        }else{
            self.loginButton.alpha = 0.5;
            self.phoneTextfield.textColor = kRed_BtnBg;
            return NO;
        }
    }] subscribeNext:^(NSString * _Nullable x) {
        self.loginButton.alpha = 1;
        self.phoneTextfield.textColor = kWhite;
    }];

2.聚合信号:

目前在应用中,登录按钮只有当用户名和密码输入框的输入都有效时才工作。现在要把这里改成响应式的。
现在的代码中已经有可以产生用户名和密码输入框是否有效的信号了——validUsernameSignal和validPasswordSignal了。现在需要做的就是聚合这两个信号来决定登录按钮是否可用。

RACSignal *signUpActiveSignal =
  [RACSignal combineLatest:@[validUsernameSignal, validPasswordSignal]
                    reduce:^id(NSNumber*usernameValid, NSNumber *passwordValid){
                      return @([usernameValid boolValue]&&[passwordValid boolValue]);
                    }];

注意:RACsignal的这个方法可以聚合任意数量的信号,reduce block的参数和每个源信号相关。ReactiveCocoa有一个工具类RACBlockTrampoline,它在内部处理reduce block的可变参数。实际上在ReactiveCocoa的实现中有很多隐藏的技巧,值得你去看看。

3.常用

上一篇 下一篇

猜你喜欢

热点阅读