RAC :目的 :事件监听,接管了苹果所有的事件机制
1. addTarget (点击事件):点击一个按钮回调方法;
2.代理
3.通知
4.KVO
(RACSignal)信号刚创建的时候是冷信号,不会工作的,只有有订阅者的时候才是热信号会工作;
传递信息的方式:
在信号的内部给订阅者通过send三个方法告诉订阅者对应的,订阅者只需要监听不同的代码块获取到自己想要的东西;
cocapods使用的时候必须要导入use_frameworks,因为支持 swift;
终端查看文件:
LS - lag
并且用隐藏文件打开的时候,这样就不会每次都提交pods,不再被重复提交; 将隐藏文件打开,
使用的时候必须用
双向绑定
因为需要监听属性变化
RAC是目前唯一的选择
在创建模型的时候我们可以在.h方法里面添加一下,在打印的时候可以查看到模型中信息的具体数值;
- (NSString*)description {
NSArray*keys =@[@"name",@"age"];
return [selfdictionaryWithValuesForKeys:keys].description;
}
三种方式:
1.sendNext 有结果的将数据传递给订阅者
2.sendError 错误的时候将错误传递给订阅者
3.sendCompleted 结束的时候传递给订阅者
有对应的方法
通过信号的三种状态接管了苹果所有的监听事件
具体做法:
1.模型到UI:
RAC(nameTextField, text) =RACObserve(_person, name);
2.UI到模型:
[[RACSignalcombineLatest:@[nameTextField.rac_textSignal, ageTextField.rac_textSignal]]subscribeNext:^(RACTuple*x) {
_person.name= [xfirst];
_person.age= [[xsecond]integerValue];
}];
RAC的循环引用:
RAC在使用的时候,因为系统提供的“信号”是始终存在的,
因此,所有的 block 中如果出现 self,成员变量,百分之百会循环引用!
解除循环的方法:
1. __weak
2. 利用RAC 提供的 weak—strong dance
在 block 的外部使用 @weakify(self)
在 block 的内部使用 @strongify(self)