Liang's Blog

Dont worry,be happy.

RAC

| Comments

核心英雄

1
RAC RACSignal 

样板代码

1
2
3
4
5
6
7
RAC(self.clickbutton, enabled) = [RACSignal combineLatest:@[
                                                                self.username.rac_textSignal,
                                                                self.p1.rac_textSignal,
                                                                self.p2.rac_textSignal
                                                                ] reduce:^id(NSString *name, NSString *p1, NSString *p2){
                                                                    return @(name.length >0 && p1.length>0 && p1 && [p1 isEqualToString:p2]);
                                                                }];

代码用来做表单验证,只有名字长度大于0,并且两次输入密码一致,且长度大于0时才可以点击。

对概念通俗的解释:

1
2
3
ReactiveCocoa是github去年开源的一个项目,是在iOS平台上对FRP的实现。FRP的核心是信号,信号在ReactiveCocoa(以下简称RAC)中是通过RACSignal来表示的,信号是数据流,可以被绑定和传递。

可以把信号想象成水龙头,只不过里面不是水,而是玻璃球(value),直径跟水管的内径一样,这样就能保证玻璃球是依次排列,不会出现并排的情况(数据都是线性处理的,不会出现并发情况)。水龙头的开关默认是关的,除非有了接收方(subscriber),才会打开。这样只要有新的玻璃球进来,就会自动传送给接收方。可以在水龙头上加一个过滤嘴(filter),不符合的不让通过,也可以加一个改动装置,把球改变成符合自己的需求(map)。也可以把多个水龙头合并成一个新的水龙头(combineLatest:reduce:),这样只要其中的一个水龙头有玻璃球出来,这个新合并的水龙头就会得到这个球。

参考文章:http://blog.leezhong.com/ios/2013/06/19/frp-reactivecocoa.html

Comments