@veightz
2014-09-14T15:17:54.000000Z
字数 786
阅读 1881
ReactiveCocoa
学习资料参考:
这两天开始学习RAC, 拜读了limboy的博客, 写了一些个人的理解, 不知有没有认识上的错误. 如有错误, 希望能多多指点.
RAC(self.submitButton.enabled) =
[RACSignal combineLatest:@[self.usernameField.rac_textSignal, // 源信号一: 用户名字段内容
self.passwordField.rac_textSignal] // 源信号二: 密码框字段内容
reduce:^id(NSString *userName, NSString *password) {
// 源信号合并后,返回的信号值
return @(userName.length >= 6 && password.length >= 6);
}];
个人理解:
RAC
实际上是个宏, RAC(self.submitButton.enabled)
相当于声明 self.submitButton.enabled
作为一个信号订阅者,接收来自某个信道的信号值. [RACSignal combineLatest: reduce:]
能返回一个具体的信道,且从这个构造方法的名字中可以猜到, 它也是一个通过接收了其他某些信道的信号值, 通过合并处理,产生新信号值的信道.在上面的示例中, combineLatest:
选择合并两个文本输入框的文本内容信道, reduce:
则实现了返回信号的计算算法, 即怎么处理接收来的信号. 生成了信道最终赋值给RAC(self.submitButton.enabled)
,相当于信道接入给信号订阅者.