ReactiveObjC
RAC的目的就是取代iOS中的消息传递机制的 比如 target-action / 代理 / 通知 / kvo / 等等 RAC的本质其实就是KVO+Block对iOS系统事件进行封装
1.例如
button的点击事件
1
2
3
4
5
6
7RACDisposable* senderDispoable = [[_sender rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {
NSLog(@"点击事件.......");
}];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[senderDispoable dispose]; //三秒之后取消订阅 就接收不到事件了 设置_sender.enabled同样有效
});
obj的响应方法
1 | [[self rac_signalForSelector:@selector(viewDidLoad)] subscribeNext:^(RACTuple * _Nullable x) { |
代理d方法
1 | UITableView* table = [UITableView new]; |
通知
1
2
3
4[[[NSNotificationCenter defaultCenter] rac_addObserverForName:@"DogNotiName" object:nil] subscribeNext:^(NSNotification * _Nullable x) {
NSLog(@"通知回调....");
}];
KVO
1 | RACDisposable* dispose = [RACObserve(dog, dogName) subscribeNext:^(id _Nullable x) { |
RAC信号
1 | // 1.创建信号 |
登录的逻辑
1 | @weakify(self); |
信号的组合
1 | @weakify(self); |
三个滑块和对应三个输入框都可以自定义修改(范围是0~1) 从而影响最后rgb颜色
1 | -(void)colorImp1{ |
RAC与MVVM
1 | rac与mvvm结合可以更好的使用mvvm模式 |
VC中的网络请求
1 | @weakify(self); |
ViewModel中的请求实现
1 | -(RACCommand *)requestCommand{ |
Cell中的数据绑定
1 | - (void)awakeFromNib { |