初始RAC,简单的一些代码编写
从pod拉取下代码以后,导入头文件
#import "ReactiveObjC/ReactiveObjC.h"
#import "SVProgressHUD/SVProgressHUD.h"
//#import "ReactiveObjC/RACSignal.h"
//#import "ReactiveObjC/RACDisposable.h"
//#import "ReactiveObjC/RACSubscriber.h"
这里看你的需要导入对应的头文件,一般来说导入第一个头文件,默认的都可以使用了
下面是一些简单的使用(现在只是单纯一些信号的使用)
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
NSLog(@"发送信号");
[subscriber sendNext:@(2)];// 发送信号
[subscriber sendError:nil]; //信号出错
[subscriber sendCompleted]; // 信号发送完成
return [RACDisposable disposableWithBlock:^{
NSLog(@"信号销毁");
}];// 这个方法监听信号是否销毁,最后会执行
}];
[signal subscribeNext:^(id _Nullable x) {
NSLog(@"接收到信号");
}];// 发送信号以后,这里会执行
RACSubject *subject = [RACSubject subject];
[subject sendNext:@(520)];
[subject subscribeNext:^(id _Nullable x) {
NSLog(@"第一个订阅者");
NSLog(@"%@",x);
}];//这是订阅者 520
[subject subscribeNext:^(id _Nullable x) {
NSLog(@"第二个订阅者%@",x);
}]; 520
RACReplaySubject *replaySubject = [RACReplaySubject subject];//这个会重复的订阅信号
[replaySubject sendNext:@(520)];
[replaySubject sendNext:@(1314)];
[replaySubject subscribeNext:^(id _Nullable x) {
NSLog(@"第一个,%@",x);//二次输出 一次520,一次1314
}];
[replaySubject subscribeNext:^(id _Nullable x) {
NSLog(@"第二个,%@",x);//二次输出 一次520,一次1314
}];
浙公网安备 33010602011771号