RAC的作用以及使用场景
场景:一个事件的出现,导致需要发起某个业务的处理
作用:将事件所对应的待处理业务封装在Block中,让事件和业务处理的代码放在一起,方便查阅与管理。
符合代码设计中“高内聚,低耦合”的设计思想。
RAC的通用工作流程
1.创建信号
2.发送信号
3.订阅信号
RAC的常用类:
1~9相对常用
1.RACSignal: 信号类,一般表示将来有数据传递,只要有数据改变,信号内部接收到数据,就会马上发出数据。
2.RACSubscriber: 订阅者,用于发送信号,这是一个协议。
3.RACDisposable: 用于取消订阅或者清理资源。当信号发送完成或者发送错误的时候,就会自动触发。
4.RACSubject: 信号提供者,可以自己充当信号,又能发送信号;RACReplaySubject: 重复提供信号类,继承自RACSubject。
区别: RACReplaySubject可以先发送信号,再订阅信号; RACSubject不具备这种功能。
5.RACTuple: 元组类,类似NSArray,用来包装值。
6.RACSequence: RAC中的集合类,用于代替NSArray,NSDictionary,可以用来快速遍历数组和字典。
7.RACCommand: RAC用于处理事件的类,可以把事件如何处理,事件中的数据如何传递,包装到这个类中,便于监控事件的执行过程。
8.RACMulticastConnection: 用于当一个信号,被多次订阅时,为了保证创建信号时,避免多次调用创建信号中的block,造成副作用,可以使用这个类处理。
9.RACScheduler: RAC中的队列,用GCD封装的。
10.RACUnit: 表示steam不包含有意义的值,相当于nil。
11.RACEvent: 把数据包装成信号事件(signal event),通过RACSignal的-materialize调用处理。