RAC框架提供的API使我们实际开发中非常常用的代理、KVO、通知等变得更加内聚,使用更加方便。ReactiveCocoa是一个函数式响应式编程思想下开发的一套框架。下面是具体使用
通知
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardDidShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {
NSLog(@"%@",x);
}];
KVO
[_redView rac_observeKeyPath:@"frame" options:NSKeyValueObservingOptionNew observer:nil block:^(id value, NSDictionary *change, BOOL causedByDealloc, BOOL affectedOnlyLastComponent) {
NSLog(@"1 - %@",value);
}];
或者使用宏
[RACObserve(_redView, frame) subscribeNext:^(id _Nullable x) {
NSLog(@"3 - %@",x);
}];
代理
// 1. 在需要向外发信号的对象添加属性
- (RACSubject *)btnClickSignal{
if (!_btnClickSignal) {
_btnClickSignal = [RACSubject subject];
}
return _btnClickSignal;
}
- (IBAction)btnClick:(id)sender{
[_btnClickSignal sendNext:@"我可以代替代理哦"];
}
// 2. 在处理这个信号的对象里面
[_greenView.btnClickSignal subscribeNext:^(id _Nullable x) {
NSLog(@"%@",x);
}];