ReactiveCocoa 組播原理

2018-08-01 16:11 更新

什么是組播?組播是多個(gè)訂閱者共同享用一個(gè)訂閱信號(hào)的術(shù)語(yǔ)。通過(guò)上一節(jié)的內(nèi)容我們知道在默認(rèn)的情況下,信號(hào)是冷的。但是有時(shí)候,我們并不想讓冷信號(hào)在每一次被訂閱時(shí)工作。這通常在邊界效應(yīng)、訂閱所要執(zhí)行的任務(wù)代價(jià)昂貴或者只能以其他方式在適當(dāng)?shù)臅r(shí)間執(zhí)行時(shí)有這種需求。這時(shí)網(wǎng)絡(luò)請(qǐng)求浮現(xiàn)在腦海中。

所以與其從這樣的信號(hào)中創(chuàng)建一個(gè)RACMulticastConnection不如使用RACSignalpublish方法或者multicast:方法。前者可以創(chuàng)建一個(gè)組播連接,后者也一樣為您創(chuàng)建一個(gè)組播連接但需要一個(gè)RACSubject參數(shù)。當(dāng)它被調(diào)用時(shí)這個(gè)RACSubject可以通過(guò)底層信號(hào)發(fā)送一個(gè)值出來(lái)。任何對(duì)這個(gè)值有興趣的,都可以用這個(gè)從底層信號(hào)發(fā)送一個(gè)值到連接的信號(hào)來(lái)替代你提供的RACSubject,這個(gè)信號(hào)恰好就等同于你的這個(gè)RACSubject.

為了說(shuō)明這種不同,請(qǐng)參考下面的插圖:

multiple_subscriptions

由于信號(hào)是冷啟動(dòng)的,每增加一個(gè)訂閱者,她就會(huì)被執(zhí)行一次。這種情況是我們不希望看到的,可以使用組播連接來(lái)改善。

multicast_connection

信號(hào)的組播連接訂閱,當(dāng)它傳送了一個(gè)新值的時(shí)候,是通過(guò)公共頻道來(lái)傳送給信號(hào)的。我們可以根據(jù)自己的喜好訂閱該信號(hào),但這個(gè)信號(hào)在訂閱相關(guān)的操作上有且僅會(huì)執(zhí)行一次,而不是像以前那樣增加一個(gè)訂閱者這個(gè)信號(hào)上就執(zhí)行一次訂閱相關(guān)的操作。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)