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