RAC之RACMulticastConnection簡單學習

當有多個訂閱者,但是我們只想發(fā)送一個信號的時候怎么辦?這時我們就可以用RACMulticastConnection,來實現(xiàn)。代碼示例如下

?// 1.發(fā)送請求,用一個信號內包裝,不管有多少個訂閱者,只想發(fā)一次請求

? ? self.single = [RACSignal createSignal:^RACDisposable *(id subscriber) {

? ? ? ? // 發(fā)送請求

? ? ? ? NSLog(@"發(fā)送請求啦");

? ? ? ? @strongify(self);

? ? ? ? self.count2++;

? ? ? ? // 發(fā)送信號

? ? ? ? [subscribersendNext:[NSStringstringWithFormat:@"connection-消息只需要發(fā)送一次請求即可%ld",(long)self.count2]];

? ? ? ? returnnil;

? ? }];

? ? //2. 創(chuàng)建連接類

? ? RACMulticastConnection *connection = [self.single publish];

? ? [connection.signalsubscribeNext:^(idx) {

? ? ? ? NSLog(@"%@", x);

? ? }];

? ? [connection.signalsubscribeNext:^(idx) {

? ? ? ? NSLog(@"%@", x);

? ? }];

? ? [connection.signalsubscribeNext:^(idx) {

? ? ? ? NSLog(@"%@", x);

? ? }];

? ? //3. 連接。只有連接了才會把信號源變?yōu)闊嵝盘?/p>

? ? [connectionconnect];

log打印:

?************************************************************************************

?2018-08-14 16:39:49.783683+0800 RACDemo[2596:73190] 發(fā)送請求啦

?2018-08-14 16:39:49.783996+0800 RACDemo[2596:73190] connection-消息只需要發(fā)送一次請求即可1

?2018-08-14 16:39:49.784373+0800 RACDemo[2596:73190] connection-消息只需要發(fā)送一次請求即可1

?2018-08-14 16:39:49.784623+0800 RACDemo[2596:73190] connection-消息只需要發(fā)送一次請求即可1

普通做法,代碼如下:

? ? @weakify(self);

? ? // 普通寫法, 這樣的缺點是:沒訂閱一次信號就得重新創(chuàng)建并發(fā)送請求,這樣很不友好

? ? RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id subscriber) {

? ? ? ? // didSubscribeblock中的代碼都統(tǒng)稱為副作用。

? ? ? ? // 發(fā)送請求---比如afn

? ? ? ? @strongify(self);

? ? ? ? self.count1++;

? ? ? ? NSLog(@"發(fā)送請求啦");

? ? ? ? // 發(fā)送信號

? ? ? ? [subscribersendNext:[NSStringstringWithFormat:@"connection-消息請求%ld次",(long)self.count1]];

? ? ? ? returnnil;

? ? }];

? ? [signalsubscribeNext:^(idx) {

? ? ? ? NSLog(@"%@", x);

? ? }];

? ? [signalsubscribeNext:^(idx) {

? ? ? ? NSLog(@"%@", x);

? ? }];

? ? [signalsubscribeNext:^(idx) {

? ? ? ? NSLog(@"%@", x);

? ? }];

需要訂閱三次,打印如下:

?2018-08-14 16:39:43.814304+0800 RACDemo[2596:73190] 發(fā)送請求啦

?2018-08-14 16:39:43.814576+0800 RACDemo[2596:73190] connection-消息請求1次

?2018-08-14 16:39:43.814811+0800 RACDemo[2596:73190] 發(fā)送請求啦

?2018-08-14 16:39:43.814991+0800 RACDemo[2596:73190] connection-消息請求2次

?2018-08-14 16:39:43.816049+0800 RACDemo[2596:73190] 發(fā)送請求啦

?2018-08-14 16:39:43.816599+0800 RACDemo[2596:73190] connection-消息請求3次

?************************************************************************************

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • [{"reportDate": "2018-01-23 23:28:49","fluctuateCause": n...
    加勒比海帶_4bbc閱讀 899評論 1 2
  • 本文用來介紹 iOS 多線程中 GCD 的相關知識以及使用方法。這大概是史上最詳細、清晰的關于 GCD 的詳細講...
    花花世界的孤獨行者閱讀 581評論 0 1
  • 文用來介紹 iOS 多線程中 GCD 的相關知識以及使用方法。通過本文,您將了解到: 1. GCD 簡介 2. G...
    曉_我想去環(huán)游世界閱讀 1,211評論 2 8
  • 從小悲觀,常常自責。 一個身體,總是有殃。 一個理想,總難實現(xiàn)。 一個未來,總看不到。 小學開始,日漸開朗。 四十...
    泊寧趙閱讀 257評論 0 2
  • 昨天是我的“小朋友”入職的日子。我不太適應這樣的日子。過去的3個月里面,我們都是通過網絡進行交流,熟悉的是網絡的語...
    WEI_曹蕾閱讀 643評論 0 6

友情鏈接更多精彩內容