RAC简介
2020-08-05 本文已影响0人
ZAREMYDREAM
前言
RAC是iOS开发中经常使用到响应式框架,在OC中可以通过pod导入
pod 'ReactiveObjC'
RAC信号创建与发送
RAC中一个常见的流程:
1.创建一个信号
2.订阅信号
3.发送信号
RACSignal的作用就是创建一个信号,默认冷信号(未被订阅)
//RACSignal创建一个信号(默认冷信号)
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
return nil;
}];
通过subscribeNext进行订阅
[signal subscribeNext:^(id _Nullable x) {
//x为收到信号内容
NSLog(@"%@", x);
}];
在创建RACSignal时,可发现block:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) ,其中subscriber负责发送消息,RACDisposable负责取消订阅
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber> _Nonnull subscriber) {
[subscriber sendNext:@"信号"];
//subscriber被释放时才会进入
return [RACDisposable disposableWithBlock:^{
//取消订阅回调
NSLog(@"订阅取消");
}];
}];
注意:[RACDisposable disposableWithBlock:]只有在subscriber被释放时,才会调用,如果我们创建一个强引用属性持有subscriber,这句代码不会执行。
在订阅信号时subscribeNext 返回一个RACDisposable,可保存该对象,通过dispose手动释放
RACDisposable *disposable = [signal subscribeNext:^(id _Nullable x) {
//x为信号内容
NSLog(@"%@", x);
}];
[disposable dispose];