RAC的基本使用
在RAC中,一切都是信號(hào)!
RACSignal
RACSignal實(shí)例化一個(gè)信號(hào),首先,需要?jiǎng)?chuàng)建一個(gè)信號(hào),此時(shí),該信號(hào)沒有訂閱者,稱為冷信號(hào);當(dāng)有訂閱者訂閱了該信號(hào),改信號(hào)則變?yōu)闊嵝盘?hào);當(dāng)信號(hào)監(jiān)聽的資源發(fā)生改變時(shí),此信號(hào)就會(huì)給監(jiān)聽者發(fā)送消息!
總的來說,RACSignal的使用分三個(gè)步驟
1.創(chuàng)建信號(hào),通過RACSignal來創(chuàng)建信號(hào),此時(shí)信號(hào)為冷信號(hào)
2.訂閱信號(hào),訂閱者訂閱這個(gè)信號(hào),此時(shí)變?yōu)闊嵝盘?hào)
3.發(fā)送信號(hào),信號(hào)發(fā)送信號(hào),訂閱者接收到信號(hào)
經(jīng)過了簡(jiǎn)單的使用,下邊我們看一下RACSignal的實(shí)現(xiàn)原理:

RACSignal原理.png
- 首先RACSignal中+createSignal會(huì)調(diào)用子類實(shí)現(xiàn)
- 子類RACDynamicSignal中+createSignal方法會(huì)將didSubcriber這個(gè)Block以屬性_didSubcriber的形式保存
- RACSignal調(diào)用+subscribeNext訂閱信號(hào),+subscribeNext中調(diào)用RACSubscriber對(duì)象的+subscriberWithNext:error:completed方法將訂閱信號(hào)的Block傳遞過去
4.RACSubscriber對(duì)象的+subscriberWithNext:error:completed方法將訂閱信號(hào)的Block保存在_next中
5.+subscribeNext中調(diào)用創(chuàng)建信號(hào)時(shí)保存的_didSubcriber- 將存儲(chǔ)了_next的RACSubscriber對(duì)象傳遞過去
- _didSubcriber中取到存儲(chǔ)了_next的RACSubscriber對(duì)象取出來
- RACSubscriber對(duì)象調(diào)用_next,此時(shí),就將需要發(fā)送的值發(fā)送到了訂閱者的回調(diào)中