美文网首页
iOS RAC学习之路(一)

iOS RAC学习之路(一)

作者: 大大盆子 | 来源:发表于2017-06-27 17:35 被阅读291次

什么是RAC?

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

RAC的作用

  • 要了解它的作用,先要了解响应式编程:在事件发生的时候立刻做出响应,比如a=b+c,当b或者c发生变化的时候,a的值能够立刻改变,类似于蝴蝶效应。一般来说,实现这种逻辑需要用到KVO去监听b跟c,然后去重新计算a,而使用RAC就不用去管中间的过程而直接去响应事件。
  • 很方便的处理开发中常用的事件,比如Target-Action,delegate,KVO,Notification等等,它把监听事件跟处理事件的代码放到一起,无需跳到对应的方法中,代码简洁且利于管理。

运行机制

总的来说,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(订阅回调)里面监听到发送的内容。

相关文章

  • iOS RAC学习之路(一)

    什么是RAC? RAC是ReactiveCocoa的简称,是Github开源的一个应用于iOS和OS开发的第三方框...

  • iOS RAC学习之路(二)

    前言 之前对RAC有了一个基本的认识,了解了它的作用,以及RAC的运行机制,我们知道只要是信号(RACSignal...

  • (一)、iOS RAC - RACSignal

    (一)、iOS RAC - RACSignal (二)、iOS RAC - RACDisposable(三...

  • ReactiveObjC(RAC)基础

    最近学习了一下RAC的使用,参考了下面两篇文章 Jonzzs的【iOS 开发】ReactiveObjC(RAC)的...

  • RAC基础

    最近接触学习到了RAC(ReactiveCocoa),RAC是函数式+响应式编程结合 我们在iOS开发中,页面之间...

  • 2019-12-10

    iOS开发之RAC(一)初级篇 一、RAC是什么? 1、RAC全称:ReactiveCocoa, Github 一...

  • 技术在于交流,知识在于收集(七)

    收集的一些iOS开发技术博客与牛人共同进步 RAC/MVVM RAC/MVVM个人学习资源汇总 ReactiveC...

  • iOS RAC学习之路2之RACCommand

    上一篇我们已经对RACSignal的大部分用法都概括了一遍,我们把它理解为一个信号,可以比较清晰的在脑海里想象出来...

  • iOS RAC学习之路1之RACSignal

    学习准备 其实很早之前了解RAC并有意学习,只是没有时间写下来,对于一个开发者RAC确实妙不可言,但是也不要盲目的...

  • IOS RAC实践

    前言 RAC使用-->IOS RAC使用 -- ReactiveObjC 本文使用RAC+MVVM来模拟用户登录 ...

网友评论

      本文标题:iOS RAC学习之路(一)

      本文链接:https://www.haomeiwen.com/subject/axsbtxtx.html