响应式编程RAC的基本使用

  • 响应式定义

    平时咱们用的通知,代理,block都是响应式,今天学习一个第三方框架RAC,在学习过程中来对比和苹果自己的响应式

  • RAC定义

    rac全程是叫做“函数响应式编程”

  • RAC代替我们的代理使用

    首先假如我们HKView里面有一个按钮,我点击按钮想让我的vc知道,我们平时是不是就是用的代理啊,思考我们平时这样的代理应该怎么写:

代理的步骤:

  1. 定义协议(在HKview头文件上方定义协议)
  2. 协议方法(在HKview头文件上方定义方法)
  3. 定义一个代理属性(在HKview头文件里面定义属性)
  4. 但我发生事情,看看代理属性没有值,有没有响应我的方法,如果响应我就调用(在HKview发送,在VC里面遵从协议实现方法)

现在我们使用rac只需要一行代码:


image.png

这样,我们在HKview里面什么都不用干,直接点击按钮就会触发到我们vc里面的block中


image.png
  • RAC代替我们的KVO使用

    同样我们先看看如果我们用kvo我们怎做,还用HKview为例


    image.png
image.png

上面就是我们使用kvo的过程,接下来我们使用rac:

首先导入头文件#import <NSObject+RACKVOWrapper.h>
然后实现,看截图,这就可以了:


image.png

综上所述,rac代替kvo有什么好处呢,假如我需要观察好几个参数,这样我是不是需要在观察到的方法里面写很多判断,如果使用的是rac,每一个参数观察到的结果都返回给自己的block,代码比较简洁,可读性比较好

  • RAC代替我们的UIButton点击事件使用

[_button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]
一般我们使用uibutton的时候,想要有点击事件,我们都是这样做的:

image.png

使用rac是如下:
image.png

  • RAC代替我们的通知NSNotification使用

    我们使用通知的时候是这样:


    image.png

    使用rac:


    image.png
  • RAC监听我们的textfiled的文字输入代理方法

如果我们用原声的oc方法是:


image.png

使用rac的话:


image.png
  • RAC代替我们定时器

我们平时使用定时器,一般有两种

  1. NSTimer
    有runloop那篇文章的学习,我们完美的NSTimer写定时器应该是:


    image
  2. gcd


    image

现在我们使用rac来写定时器:


image.png
  • 总结

1.上面这些都是rac的基本使用,想要深入了解,还需继续学习。
2.rac还有很多其他用法,以后工作中继续学习了解其他用法
3.你会发现上面rac,都是把原来不在一块的东西,我都给他弄它一起,弄个block,想给你弄成一个信号,然后再来发信号,这就是函数式,因此rac是面向信号的

rac是面向信号的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容