iOS学习开发iOS漫步者

RAC(Reactivecocoa)之RACSignal流程及源

2018-08-31  本文已影响6人  留个念想给昨天
RAC之RACSignal流程分析

先来看RACSignal的代码

#RAC 流程分析
#1:创建信号 signal
//通过 RACSignal的子类RACDynamicSignal创建signal的同时,保存了didSubscribe{}代码块 等待_didSubscribe()执行

RACSignal* signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
    #3:发送信号
    [subscriber sendNext:@"发送信号"];
    
    #4:销毁
    return [RACDisposable disposableWithBlock:^{
        NSLog(@"销毁了");
    }];
}];

#2:订阅信号
// 通过signal 保存了nextBlock{} 并执行_didSubscribe()
[signal subscribeNext:^(id  _Nullable x) {
    NSLog(@"%@",x);
}];

第一步:RACSignal信号创建

RACSignal的 createSignal:内部创建

signal内部创建
注意创建的signal为RACDynamicSignal类型

第二步:signal 订阅信号

#2:订阅信号
    // 通过signal 保存了nextBlock{} 并执行_didSubscribe()
    [signal subscribeNext:^(id  _Nullable x) {
        NSLog(@"%@",x);
    }];
signal 订阅信号

注意保存的subscriber 为RACSubscriber,最后执行代码块didSubscribe时传入的参数为RACPassthroughSubscriber类型

第三步:RACPassthroughSubscriber发送信号

[subscriber sendNext:@"发送信号"];
发送信号

第四步:RACDisposable销毁

        # 4:销毁
        return [RACDisposable disposableWithBlock:^{
            NSLog(@"销毁了");
        }];

总结

完整流程图

写在最后:
希望这篇文章对您有帮助。当然如果您发现有可以优化的地方,希望您能慷慨的提出来。最后祝您工作愉快!

上一篇 下一篇

猜你喜欢

热点阅读