[iOS][RAC]--RACSignal类发送信号过程的低层实现

一、简单的实现步骤
套路:1、创建信号(冷信号!)
2、订阅信号(热信号!!)
3、发送数据subscriber它来发送

- (void)viewDidLoad {
    [super viewDidLoad];
    //RACSignal: 信号类,当我们有数据产生,创建一个信号!
    //1.创建信号(冷信号!)
    //didSubscribe调用:只要一个信号被订阅就会调用!!
    //didSubscribe作用:利用subscriber发送数据!!
    RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id subscriber) {
        //3.发送数据subscriber它来发送
        [subscriber sendNext:@"发送了!!!"];
        
        return nil;
    }];
    
    //2.订阅信号(热信号!!)
    //nextBlock调用:只要订阅者发送数据就会调用!
    //nextBlock作用:处理数据,展示UI界面!
    [signal subscribeNext:^(id x) {
        //x:信号发送的内容!!
        NSLog(@"%@",x);
    }];
}
1、创建信号(冷信号!)

通过上文中的第一步的RACSignal调用block方法进去查看源码:
在创建了一个消息对象signal后保存了block:subscriber


[iOS][RAC]--RACSignal类发送信号过程的低层实现_第1张图片
Snip20181102_5.png
2、订阅信号(热信号!!)
[iOS][RAC]--RACSignal类发送信号过程的低层实现_第2张图片
Snip20181102_7.png
[iOS][RAC]--RACSignal类发送信号过程的低层实现_第3张图片
Snip20181102_8.png
[iOS][RAC]--RACSignal类发送信号过程的低层实现_第4张图片
Snip20181102_9.png
3、发送数据subscriber
[iOS][RAC]--RACSignal类发送信号过程的低层实现_第5张图片
Snip20181102_10.png
[iOS][RAC]--RACSignal类发送信号过程的低层实现_第6张图片
Snip20181102_11.png
小结:RAC:中就是通过上文中1仅仅保存didSubscribe(didSubscribe作用:利用subscriber发送数据) block不执行2保存了next(nextBlock作用:处理数据,展示UI界面) block 执行了didSubscribe 3中执行了next block实现了响应式编程
总体流程图
[iOS][RAC]--RACSignal类发送信号过程的低层实现_第7张图片
Snip20181102_12.png

补充:

Snip20181102_13.png

Snip20181102_13.png
[iOS][RAC]--RACSignal类发送信号过程的低层实现_第8张图片
Snip20181102_14.png

你可能感兴趣的:([iOS][RAC]--RACSignal类发送信号过程的低层实现)