RAC积累

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)

你可能感兴趣的:(RAC积累)