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