一、介绍
ReactiveCocoa(简称RAC)是由GitHub团队开源的一套基于Cocoa的并且具有FRP特性的框架。
FRP(Functional Reactive Programming)即响应式编程。RAC就是一个第三方库,使用它可以大大简化代码,提高开发效率。
整合了系统的各种UI响应事件、通知、代理、KVO等功能,提供了使用更方便更内聚的API,思路是通过信号的创建和订阅来完成消息传递的。扩展出了多个信号关联、信号变换、信号压缩后再传递等实用的功能。
二、基础理论
(1) 什么是信号?
RAC的核心就是信号,即RACSignal。信号--传递数据的工具,当数据变化时,信号就会发送改变的信息,以通知信号的订阅者执行方法。
(2) 什么是冷热信号?
1.Hot Observable是主动的,尽管你并没有订阅事件,但是它会时刻推送,就像鼠标移动;而Cold Observable是被动的,只有当你订阅的时候,它才会发布消息。
2.Hot Observable可以有多个订阅者,是一对多,集合可以与订阅者共享信息;而Cold Observable只能一对一,当有不同的订阅者,消息是重新完整发送。
3.RACSubject及其子类是热信号。RACSignal排除RACSubject类以外的是冷信号。
三、类介绍
-
RACStream是一个抽象类,定义了流的一些操作方法。框架里面主要是使用的RACStream的子类RACSignal和RACSequence来完成操作的 -
RACSignal,信号类,框架的核心类,可以订阅这个信号来收到回调,每次订阅都会收到一次block的回调. 可以自定义创建,也可以使用框架里面提供的子类、 -
RACSubscriber,订阅者类,遵守了RACSubscriber协议的对象都可以是订阅者,可以调用方法sendNext:、sendError:、sendComplete:, 调用后即回调对应的block。 -
RACDisposable, 订阅关系的取消和相关资源的清理, 注意不是清理信号对象。


