ReactiveCocoa是一个基于函数响应式编程思想(Funcation Reactive Programming,简称FRP)的框架。由几个重要的部分组成,如下:
冷信号:例如RACSignal,它可以被订阅,订阅后进行逻辑处理或者数据传递。
热信号RACSubject:可以当成一个信号,也可以充当信号发送者。
订阅者:例如RACSubscriber。用于订阅和发送数据。它是一个协议,由具体的类实现。
清理者:例如RACDisposable,用于取消或者清理订阅者的资源。
一,冷信号和热信号的区别?
在RAC4中,Singal对应RAC2中的RACSubject即为热信号,而SignalProducer对应RAC2中的RACSignal即为了冷信号。
特点:
热信号是主动的,即使你没有订阅事件,也可以时刻推送。而冷信号是被动的,只有当你订阅的时候,它才会发送消息。
热信号可以有多个订阅者,是一对多,信号可以与订阅者共享信息。而冷信号只能一对一,当有不同的订阅者,消息会重新完整发送。
二,什么是函数响应式编程FRP
函数式编程:是把运算过程尽量写成一系列嵌套的函数调用。
如果想去调用别的方法, 就要返回一个对象
如果想用()去执行, 就要返回一个block
如果想让block再调用对象的方法, 那么block就需要返回一个对象(即返回一个值为对象的block)
响应式编程:
例如,在命令式编程环境中, a = b + c 表示将表达式的结果赋给 a,而之后改变 b 或 c 的值不会影响 a。但在响应式编程中,a的值会随着 b 或 c 的更新而更新。
【优点】
可读性强:
- 代码逻辑更加集中
- 减少共享变量,减少出错率
- 框架分步,流程清晰
复用性高:
- 丰富的高阶函数。