RACReplaySubject:繼承自RACSubject特點(diǎn):可以先發(fā)送數(shù)據(jù)在訂閱信號(hào)(基于內(nèi)部實(shí)現(xiàn))
內(nèi)部實(shí)現(xiàn)和簡(jiǎn)單使用:
- 創(chuàng)建信號(hào)
1.0 內(nèi)部初始化_valuesReceived(發(fā)送的值)
1.1 內(nèi)部實(shí)現(xiàn)初始化_subscribers數(shù)組
- 創(chuàng)建信號(hào)
- 訂閱信號(hào)
2.0 創(chuàng)建訂閱者
2.1 保存nextBlock
2.2 拿到訂閱者,遍歷所有值.
2.3 調(diào)用subscriber的sendNext方法發(fā)送所有值(此時(shí)你還沒(méi)有發(fā)送的值,所以調(diào)用send不會(huì)有作用)
- 訂閱信號(hào)
- 發(fā)送信號(hào)sendNext.
3.0 此時(shí)會(huì)將消息addObject到_valuesReceived內(nèi)保存
3.1 遍歷所有訂閱者,發(fā)送數(shù)據(jù).
- 發(fā)送信號(hào)sendNext.
代碼實(shí)現(xiàn)
//1. 創(chuàng)建信號(hào)
RACReplaySubject *subject = [RACReplaySubject subject];
//2. 訂閱信號(hào)
[subject subscribeNext:^(id x) {
NSLog(@"信號(hào)%@發(fā)送執(zhí)行",x);
}];
//3.發(fā)送信號(hào)
[subject sendNext:@"RACReplaySubject"];
總結(jié)信號(hào)
信號(hào)類:僅僅表示有數(shù)據(jù)產(chǎn)生
訂閱者:發(fā)送數(shù)據(jù)執(zhí)行nextBlock
不同的信號(hào)訂閱方式不同.不同訂閱者發(fā)送數(shù)據(jù)方式也不同
復(fù)習(xí)鞏固: