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

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

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

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


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

补充:

Snip20181102_13.png

Snip20181102_13.png
Snip20181102_14.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容