RAC的基本使用
在RAC中,一切都是信号!
RACSignal
RACSignal实例化一个信号,首先,需要创建一个信号,此时,该信号没有订阅者,称为冷信号;当有订阅者订阅了该信号,改信号则变为热信号;当信号监听的资源发生改变时,此信号就会给监听者发送消息!
总的来说,RACSignal的使用分三个步骤
1.创建信号,通过RACSignal来创建信号,此时信号为冷信号
2.订阅信号,订阅者订阅这个信号,此时变为热信号
3.发送信号,信号发送信号,订阅者接收到信号
经过了简单的使用,下边我们看一下RACSignal的实现原理:
- 首先RACSignal中+createSignal会调用子类实现
- 子类RACDynamicSignal中+createSignal方法会将didSubcriber这个Block以属性_didSubcriber的形式保存
- RACSignal调用+subscribeNext订阅信号,+subscribeNext中调用RACSubscriber对象的+subscriberWithNext:error:completed方法将订阅信号的Block传递过去
4.RACSubscriber对象的+subscriberWithNext:error:completed方法将订阅信号的Block保存在_next中
5.+subscribeNext中调用创建信号时保存的_didSubcriber- 将存储了_next的RACSubscriber对象传递过去
- _didSubcriber中取到存储了_next的RACSubscriber对象取出来
- RACSubscriber对象调用_next,此时,就将需要发送的值发送到了订阅者的回调中