多播代理

我們知道 delegate 這種通信方式是一對一的,比如我們有一個 IM Manager,它主要負(fù)責(zé)連接、斷開連接、接收消息等。有一個 VC 會根據(jù)這些事件來顯示不同的狀態(tài),那么我們會想到用 delegate 的方式來解決,即將 VC 作為 IM Manager 的代理。但是如果有多個 VC 都關(guān)心這些事件呢?delegate 這種一對一形式的通信肯定是不成了,我們會想到 Notification 這種一對多的通信,但是它會導(dǎo)致在所有 VC 中都要寫很多重復(fù)添加觀察者的代碼,而且它解決不了觀察者回傳數(shù)據(jù)的功能,即數(shù)據(jù)流向只能是從被觀察者到觀察者的單向數(shù)據(jù)傳輸。

那如何解決我們的需求呢?我們可以抽象出一個中間層,這個中間層作為 IM Manager 的代理,而多個 VC 作為中間層的代理,中間層收到事件通知后,通過消息轉(zhuǎn)發(fā)機制通知每個代理。這個中間層就叫做多播代理。

代碼其實很簡單,回頭擼一個。

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

相關(guān)閱讀更多精彩內(nèi)容

  • 類與類之間的通信我們有很多種方式,iOS中有代理,通知,block,單例類等等,每種方式都有其適用的場景 假設(shè)委托...
    不上火喝純凈水閱讀 4,371評論 3 28
  • 在IOS中為了實現(xiàn)回調(diào)一般有如下幾個方法: delegate NSNotification block4 .KVO...
    ScaryMonsterLyn閱讀 1,264評論 0 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,881評論 25 709
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,602評論 30 472
  • 1 早睡早起 自從離開晨享會后,本周我開始自己單獨打卡,本周有5天是五點半之前起床,時間記錄5次,平臺是日事清,會...
    麥子飛呀飛閱讀 161評論 1 1

友情鏈接更多精彩內(nèi)容