RACSignal(信号)介绍:
核心思想:创建信号、订阅信号、发送信号
1、创建信号及发送信号
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
//发送信号的方式有三种,都是类方法调用
//type1:发送一般信号,发送信号类型为id类型
[subscriber sendNext:@"发送信号"];
//type2:发送error信号,信号类型必须为error
[subscriber sendError:[NSError errorWithDomain:@"github.com/SkyHarute" code:2333 userInfo:@{@"errorMessage":@"异常错误"}]];
//type3:发送complete信号
[subscriber sendCompleted];
/* 1.可返回RACDisposable的对象,也可返回nil
return [RACDisposable disposableWithBlock:^{
NSLog(@"取消订阅");
}];
*/
/*2.也可返回nil
*/
return nil;
}];
类方法创建RACSignal对象,其中subscriber为发送信号的载体;方法中Block的返回类型是RACDisposable的对象,这里也可以返回nil。
2、订阅信号
发送信号的方式有三种,对应的订阅信号的方式也有三种。注:要想接收到响应信号,必须实现相应订阅方法。
//订阅一般类型信号
[signal subscribeNext:^(id _Nullable x) {
NSLog(@"类方法%@",x);
}];
//订阅错误信号
[signal subscribeError:^(NSError * _Nullable error) {
NSLog(@"%@",error);
}];
//订阅complete信号
[signal subscribeCompleted:^{
NSLog(@"complete");
}];