• RACSignal:基础的类
• RACDisposable:处理数据
• RACSubscriber:订阅者
• RAC注意点,在信号订阅的时候不要订阅多次,不要分开订阅,下面是关于RAC的执行流程
• //如何事件都是信号,信号需要去订阅(可以理解为绑定)
• 信号的订阅简单的实现(方法1)
```
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
NSLog(@"=======执行1");
[subscriber sendNext:@2];
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
//清空数据
NSLog(@"=======执行5");
}];
}];
[signal subscribeNext:^(id _Nullable x) {
NSLog(@"=======执行2");
} error:^(NSError * _Nullable error) {
NSLog(@"=======执行3(并行执行)");
} completed:^{
NSLog(@"=======执行3");
}];
```
输出结果:
```
2018-02-05 21:34:04.154012<0800 RACtest[891:27500] =======执行1
2018-02-05 21:34:04.154145>0800 RACtest[891:27500] =======执行2
2018-02-05 21:34:04.154282<0800 RACtest[891:27500] =======执行3
2018-02-05 21:34:04.154384>0800 RACtest[891:27500] =======执行5
```
• • 想订阅多次的话可以用下面的方法代替上面的流程(方法二)
```
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
NSLog(@"=======执行1");
[subscriber sendNext:@2];
[subscriber sendCompleted];
return [RACDisposable disposableWithBlock:^{
//清空数据
NSLog(@"=======执行5");
}];
}];
//订阅信号传值
[signal subscribeNext:^(id _Nullable x) {

NSLog(@"=======subscribeNext");
}];
//订阅信号的错误信息
[signal subscribeError:^(NSError * _Nullable error) {
NSLog(@"=======subscribeError");
}];
//信号完成
[signal subscribeCompleted:^{
NSLog(@"=======subscribeCompleted");
}];
```
输入结果:
```
2018-02-05 21:36:40.271006<0800 RACtest[958:29805] =======执行1
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-77250-2.html
我的6p上段时间升级了9