一些基本概念
- RACSignal是ReactiveCocoa中最核心的类
- RACSignal本身不具备发送信号的能力(RACSignal类并没有subscribeNext方法),而是由内部的一个订阅者去发出
- 只有订阅了该信号,才会触发对应的事件
- 只要有值的改变,信号内部接收到数据,就会马上发出数据
- 可通过-[RACSignal createSignal:]来创建,但很多时候通过方法的返回值来获得,譬如+[RACSignal concat:](将N个信号合成1个信号的方法)
创建方法
//1.创建信号
RACSignal *signal = [RACSignal createSignal:^RACDisposable *_Nullable (id < RACSubscriber > _Nonnull subscriber) {
//3.当有订阅者订阅信号的时候,就会调用本block
//4.发送信号
NSLog(@"signal's subscriber send 1");
[subscriber sendNext:@"1"];
//5.发送完成标记
[subscriber sendCompleted];
//6.RACDisposable,当执行过sendCompleted或者发送失败的时候,里面的block就会调用
return [RACDisposable disposableWithBlock:^{
NSLog(@"dispose");
}];
}];
//2.订阅者订阅信号
[signal subscribeNext:^(id _Nullable x) {
NSLog(@"signal receive : %@", x);
}];