背景
iOS 中有个设计模式叫单例模式,还有个模式叫代理模式,
如果想在单例中添加代理就不能像之前那样直接赋值,
那样只有最后一个代理生效,所以就有了多代理的需求
实现方式
多代理实现的关键就在于如何管理多个代理,代理也是对象,我们可以用数组装载起来,但是直接放在数组会影响代理对象的销毁。
所以这就需要一个弱引用的容器,将多个代理加入到弱引用容器中,在需要通知代理的地方遍历容器,分别去通知各代理。
(关于弱引用容器可以参考我的上篇文章OC中的弱引用容器)
1 | Talk is cheap, show me the code. ——Linus Torvalds |
1 |
|
理论上来说,不用的代理不移除也可以,但是如果有些代理由于一些错误未释放的话,就会造成多次调用的问题。如果能保证释放掉的话是没问题的。