iOS RAC学习之路(一)

2017-06-27  本文已影响291人  大大盆子

什么是RAC?

RAC是ReactiveCocoa的简称,是Github开源的一个应用于iOS和OS开发的第三方框架,具有函数式编程跟响应式编程的特性,也可称其为函数响应式编程。

RAC的作用

运行机制

总的来说,RAC是围绕signal(信号)来运行的,基本流程就是信号三部曲:

//1.创建信号,点进去可以看到:
//  它其实创建了一个RACDynamicSignal信号,并保存了didSubscribe这个Block
RACSignal *signal = [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
    NSLog(@"创建了信号");
    
    //3.发送信号,点进去可以看到
    //  执行之前所保存的nextBlock
    [subscriber sendNext:@"ZM"];
    NSLog(@"发送了信号");
    
    return [RACDisposable disposableWithBlock:^{
        //取消订阅时的回调
    }];
}];

//2.订阅信号,点进去可以看到:
//  创建了一个RACSubscriber订阅者,并保存了一个nextBlock,
//  同时执行之前所保存的didSubscribe这个Block
[signal subscribeNext:^(id  _Nullable x) {
    NSLog(@"订阅了信号");
    NSLog(@"%@",x);
    
}];
打印结果
这边贴上一张图来更好的帮助我们理解其中的实现原理
信号三部曲
首先在创建信号的时候,带进去一个已经订阅的Block(didSubscribe),把它保存在信号中,并没有执行;

在订阅信号的时候,带进去一个发送信号的Block(nextBlock),然后创建一个订阅者(RACSubscriber对象),订阅者会把nextBlock进行保存,接着执行之前信号保存的didSubscribe这个Block,并将订阅者传递过去;

然后在didSubscribe回调里面,由订阅者发送信号,也就是执行之前保存的nextBlock;

最后在nextBlock(订阅回调)里面监听到发送的内容。

上一篇下一篇

猜你喜欢

热点阅读