-
响应式定义
平时咱们用的通知,代理,block都是响应式,今天学习一个第三方框架RAC,在学习过程中来对比和苹果自己的响应式
-
RAC定义
rac全程是叫做“函数响应式编程”
-
RAC代替我们的代理使用
首先假如我们HKView里面有一个按钮,我点击按钮想让我的vc知道,我们平时是不是就是用的代理啊,思考我们平时这样的代理应该怎么写:
代理的步骤:
- 定义协议(在HKview头文件上方定义协议)
- 协议方法(在HKview头文件上方定义方法)
- 定义一个代理属性(在HKview头文件里面定义属性)
- 但我发生事情,看看代理属性没有值,有没有响应我的方法,如果响应我就调用(在HKview发送,在VC里面遵从协议实现方法)
现在我们使用rac只需要一行代码:
这样,我们在HKview里面什么都不用干,直接点击按钮就会触发到我们vc里面的block中
-
RAC代替我们的KVO使用
同样我们先看看如果我们用kvo我们怎做,还用HKview为例
上面就是我们使用kvo的过程,接下来我们使用rac:
首先导入头文件#import <NSObject+RACKVOWrapper.h>
然后实现,看截图,这就可以了:
综上所述,rac代替kvo有什么好处呢,假如我需要观察好几个参数,这样我是不是需要在观察到的方法里面写很多判断,如果使用的是rac,每一个参数观察到的结果都返回给自己的block,代码比较简洁,可读性比较好
-
RAC代替我们的UIButton点击事件使用
[_button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]
一般我们使用uibutton的时候,想要有点击事件,我们都是这样做的:
使用rac是如下:
-
RAC代替我们的通知NSNotification使用
我们使用通知的时候是这样:
使用rac:
-
RAC监听我们的textfiled的文字输入代理方法
如果我们用原声的oc方法是:
使用rac的话:
-
RAC代替我们定时器
我们平时使用定时器,一般有两种
-
NSTimer
有runloop那篇文章的学习,我们完美的NSTimer写定时器应该是:
-
gcd
现在我们使用rac来写定时器:
-
总结
1.上面这些都是rac的基本使用,想要深入了解,还需继续学习。
2.rac还有很多其他用法,以后工作中继续学习了解其他用法
3.你会发现上面rac,都是把原来不在一块的东西,我都给他弄它一起,弄个block,想给你弄成一个信号,然后再来发信号,这就是函数式,因此rac是面向信号的
rac是面向信号的