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];
上一篇 下一篇

猜你喜欢

热点阅读