最近接触学习到了RAC(ReactiveCocoa),RAC是函数式+响应式编程结合
我们在iOS开发中,页面之间数据的传递一般都使用block,代理,通知,KVO,而RAC不禁包含上面的功能,还可以监听各种事件,依据响应式函数编程,RAC方法本身更加简洁明了,通过提供信号的方式(RACSignal)可以捕捉当前以及未来的属性值变化,而且无需持续观察和更新代码。可直接在block中将逻辑代码加入其中,使得代码紧凑,更加直观。
RAC使用三部曲 1:创建信号(默认是冷信号) 2:订阅信号(冷信号变成热信号) 3:发送信号
![](https://img.haomeiwen.com/i14782293/669ede9e7bb690a3.png)
替换代理和通知
![](https://img.haomeiwen.com/i14782293/72059e56b88b7ee8.png)
RAC中几个比较重要的类 RACSignal RACSubject RACReplaySubject 这三个类都是信号类,RACReplaySubject继承于RACSubject,RACSubject继承于RACSignal。RACSignal只能用于创建信号而本身不能发送信号,RACSubject和RACReplaySubject既能创建信号也能发送信号,RACSubject与RACReplaySubject区别是RACSubject必须要先监听信号,而RACReplaySubject可以先发送信号然后再监听。
RAC中万物皆信号,我们也可以为信号设置一些条件,比如我只想接收前几次的信号,或者跳过第一次信号等等这些,下面看代码
![](https://img.haomeiwen.com/i14782293/9feaffe9650c9a1e.png)
![](https://img.haomeiwen.com/i14782293/2456816baafe6b02.png)
![](https://img.haomeiwen.com/i14782293/34679021107425c7.png)
![](https://img.haomeiwen.com/i14782293/48896b8ff38fc913.png)
![](https://img.haomeiwen.com/i14782293/e73f0690928fb628.png)
![](https://img.haomeiwen.com/i14782293/ab64a6560e83e880.png)
![](https://img.haomeiwen.com/i14782293/af45b0b44f73e902.png)
![](https://img.haomeiwen.com/i14782293/c2e55da8701fd908.png)
![](https://img.haomeiwen.com/i14782293/47b9f5b795c63f2a.png)
网友评论