RAC :目的 :事件監(jiān)聽,接管了蘋果所有的事件機(jī)制
1. addTarget (點(diǎn)擊事件):點(diǎn)擊一個(gè)按鈕回調(diào)方法;
2.代理
3.通知
4.KVO
(RACSignal)信號(hào)剛創(chuàng)建的時(shí)候是冷信號(hào)太颤,不會(huì)工作的兜畸,只有有訂閱者的時(shí)候才是熱信號(hào)會(huì)工作纺念;
傳遞信息的方式:
在信號(hào)的內(nèi)部給訂閱者通過send三個(gè)方法告訴訂閱者對應(yīng)的渠驼,訂閱者只需要監(jiān)聽不同的代碼塊獲取到自己想要的東西;
cocapods使用的時(shí)候必須要導(dǎo)入use_frameworks蔑穴,因?yàn)橹С?swift忠寻;
終端查看文件:
LS - lag
并且用隱藏文件打開的時(shí)候,這樣就不會(huì)每次都提交pods存和,不再被重復(fù)提交奕剃; 將隱藏文件打開,
使用的時(shí)候必須用
雙向綁定
因?yàn)樾枰O(jiān)聽屬性變化
RAC是目前唯一的選擇
在創(chuàng)建模型的時(shí)候我們可以在.h方法里面添加一下捐腿,在打印的時(shí)候可以查看到模型中信息的具體數(shù)值纵朋;
- (NSString*)description {
NSArray*keys =@[@"name",@"age"];
return [selfdictionaryWithValuesForKeys:keys].description;
}
三種方式:
1.sendNext 有結(jié)果的將數(shù)據(jù)傳遞給訂閱者
2.sendError 錯(cuò)誤的時(shí)候?qū)㈠e(cuò)誤傳遞給訂閱者
3.sendCompleted 結(jié)束的時(shí)候傳遞給訂閱者
有對應(yīng)的方法
通過信號(hào)的三種狀態(tài)接管了蘋果所有的監(jiān)聽事件
具體做法:
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的循環(huán)引用:
RAC在使用的時(shí)候,因?yàn)橄到y(tǒng)提供的“信號(hào)”是始終存在的茄袖,
因此操软,所有的 block 中如果出現(xiàn) self,成員變量宪祥,百分之百會(huì)循環(huán)引用聂薪!
解除循環(huán)的方法:
1. __weak
2. 利用RAC 提供的 weak—strong dance
在 block 的外部使用 @weakify(self)
在 block 的內(nèi)部使用 @strongify(self)