ReactiveCocoa

ReactiveCocoa 其实就是一个用来帮我们处理事件的一个第三方的框架!

ReactiveCocoa结合了几种编程风格:

函数式编程(Functional Programming):使用高阶函数,例如函数用其他函数作为参数。

响应式编程(Reactive Programming):关注于数据流和变化传播。

所以,你可能听说过ReactiveCocoa被描述为函数响应式编程(FRP)框架。

首先你需要导入这个第三方库,一般使用cocoapods进行管理,不懂的可以百度一下,最近安装pod可能会遇到很多问题,不过你遇到的问题有人比你遇到的早,所以很不幸,别人都替你解决了,你只需要找到解决方法即可,可以参考我的另一篇文章2016安装cocoapods。需要注意的是,你search到的是最新的ReativeCocoa,支持swift3.0的。如果你的项目是OC语言写的话,会不支持,我用的是v2.4.4,支持OC最新版本是v2.5。不废话了,写一个简单的登录界面吧,理解下RAC是如何如何强大的!

1.RACSiganl:信号类,一般表示将来有数据传递,只要有数据改变,信号内部接收到数据,就会马上发出数据。

信号类(RACSiganl),只是表示当数据改变时,信号内部会发出数据,它本身不具备发送信号的能力,而是交给内部一个订阅者去发出。默认一个信号都是冷信号,也就是值改变了,也不会触发,只有订阅了这个信号,这个信号才会变为热信号,值改变了才会触发。调用信号RACSignal的subscribeNext就能订阅。

ReactiveCocoa_第1张图片
图1
ReactiveCocoa_第2张图片

2.RACSubject:RACSubject:信号提供者,自己可以充当信号,又能发送信号。使用场景:通常用来代替代理,有了它,就不必要定义代理了。

RACReplaySubject:重复提供信号类,RACSubject的子类。

RACReplaySubject与RACSubject区别:RACReplaySubject可以先发送信号,在订阅信号,RACSubject就不可以。

使用场景一:如果一个信号每被订阅一次,就需要把之前的值重复发送一遍,使用重复提供信号类。使用场景二:可以设置capacity数量来限制缓存的value的数量,即只缓充最新的几个值。

图2.2
ReactiveCocoa_第3张图片
图3,3
ReactiveCocoa_第4张图片
图3
ReactiveCocoa_第5张图片
图2

下面简单的使用下跳转rac_signalForControlEvents 和代理;

ReactiveCocoa_第6张图片
第一步在第二个页面设置代理
ReactiveCocoa_第7张图片
第二步在第一个页面设置代理信号,订阅代理信号
ReactiveCocoa_第8张图片
最后在第二个页面通知
ReactiveCocoa_第9张图片
使用ARC遍历数组
ReactiveCocoa_第10张图片
使用ARC遍历字典
ReactiveCocoa_第11张图片
这个不推荐使用
ReactiveCocoa_第12张图片
rac的高级写法

3.RACCommand:RAC中用于处理事件的类,可以把事件如何处理,事件中的数据如何传递,包装到这个类中,他可以很方便的监控事件的执行过程。使用场景:监听按钮点击,网络请求

你可能感兴趣的:(ReactiveCocoa)