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)的方式有三種饥瓷,都是類方法調(diào)用
//type1:發(fā)送一般信號(hào)剥纷,發(fā)送信號(hào)類型為id類型
[subscriber sendNext:@"發(fā)送信號(hào)"];
//type2:發(fā)送error信號(hào),信號(hào)類型必須為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;
}];
類方法創(chuàng)建RACSignal對(duì)象晦鞋,其中subscriber為發(fā)送信號(hào)的載體;方法中Block的返回類型是RACDisposable的對(duì)象棺克,這里也可以返回nil悠垛。
2、訂閱信號(hào)
發(fā)送信號(hào)的方式有三種娜谊,對(duì)應(yīng)的訂閱信號(hào)的方式也有三種确买。注:要想接收到響應(yīng)信號(hào),必須實(shí)現(xiàn)相應(yīng)訂閱方法纱皆。
//訂閱一般類型信號(hào)
[signal subscribeNext:^(id _Nullable x) {
NSLog(@"類方法%@",x);
}];
//訂閱錯(cuò)誤信號(hào)
[signal subscribeError:^(NSError * _Nullable error) {
NSLog(@"%@",error);
}];
//訂閱complete信號(hào)
[signal subscribeCompleted:^{
NSLog(@"complete");
}];