多播代理

我们知道 delegate 这种通信方式是一对一的,比如我们有一个 IM Manager,它主要负责连接、断开连接、接收消息等。有一个 VC 会根据这些事件来显示不同的状态,那么我们会想到用 delegate 的方式来解决,即将 VC 作为 IM Manager 的代理。但是如果有多个 VC 都关心这些事件呢?delegate 这种一对一形式的通信肯定是不成了,我们会想到 Notification 这种一对多的通信,但是它会导致在所有 VC 中都要写很多重复添加观察者的代码,而且它解决不了观察者回传数据的功能,即数据流向只能是从被观察者到观察者的单向数据传输。

那如何解决我们的需求呢?我们可以抽象出一个中间层,这个中间层作为 IM Manager 的代理,而多个 VC 作为中间层的代理,中间层收到事件通知后,通过消息转发机制通知每个代理。这个中间层就叫做多播代理。

代码其实很简单,回头撸一个。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 类与类之间的通信我们有很多种方式,iOS中有代理,通知,block,单例类等等,每种方式都有其适用的场景 假设委托...
    不上火喝纯净水阅读 4,295评论 3 28
  • 在IOS中为了实现回调一般有如下几个方法: delegate NSNotification block4 .KVO...
    ScaryMonsterLyn阅读 1,238评论 0 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,457评论 25 709
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,268评论 30 472
  • 1 早睡早起 自从离开晨享会后,本周我开始自己单独打卡,本周有5天是五点半之前起床,时间记录5次,平台是日事清,会...
    麦子飞呀飞阅读 142评论 1 1