RACSignal(信號(hào))介紹:
核心思想:創(chuàng)建信號(hào)、訂閱信號(hào)、發(fā)送信號(hào)
1、創(chuàng)建信號(hào)及發(fā)送信號(hào)
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
//發(fā)送信號(hào)的方式有三種,都是類(lèi)方法調(diào)用
//type1:發(fā)送一般信號(hào),發(fā)送信號(hào)類(lèi)型為id類(lèi)型
[subscriber sendNext:@"發(fā)送信號(hào)"];
//type2:發(fā)送error信號(hào),信號(hào)類(lèi)型必須為error
[subscriber sendError:[NSError errorWithDomain:@"github.com/SkyHarute" code:2333 userInfo:@{@"errorMessage":@"異常錯(cuò)誤"}]];
//type3:發(fā)送complete信號(hào)
[subscriber sendCompleted];
/* 1.可返回RACDisposable的對(duì)象,也可返回nil
return [RACDisposable disposableWithBlock:^{
NSLog(@"取消訂閱");
}];
*/
/*2.也可返回nil
*/
return nil;
}];
類(lèi)方法創(chuàng)建RACSignal對(duì)象,其中subscriber為發(fā)送信號(hào)的載體;方法中Block的返回類(lèi)型是RACDisposable的對(duì)象,這里也可以返回nil。
2、訂閱信號(hào)
發(fā)送信號(hào)的方式有三種,對(duì)應(yīng)的訂閱信號(hào)的方式也有三種。注:要想接收到響應(yīng)信號(hào),必須實(shí)現(xiàn)相應(yīng)訂閱方法。
//訂閱一般類(lèi)型信號(hào)
[signal subscribeNext:^(id _Nullable x) {
NSLog(@"類(lèi)方法%@",x);
}];
//訂閱錯(cuò)誤信號(hào)
[signal subscribeError:^(NSError * _Nullable error) {
NSLog(@"%@",error);
}];
//訂閱complete信號(hào)
[signal subscribeCompleted:^{
NSLog(@"complete");
}];