我理解在iOS的委托模式中,您希望对委托的引用很弱,但是如果我有这样的话:
@property (nonatomic, weak) NSMutableArray *delegates;
并且在此数组中是
的实例id<myDelegateCallback>
数组内部的项目有很强的保留。
我是否在具有此属性的类中分配/初始化数组,或者将数组设置为另一个类拥有的实例?
或者,这不是代表模式的良好实现吗?我知道我可以使用Notifications等,但想知道这是否真的可以在没有ARC问题的情况下工作。
答案 0 :(得分:2)
您只能有一个指定的委托对象,而不是一个委托数组。某些类具有委托和符合唯一协议的“数据源”,但这仅适用于需要从某个指定位置获取其内容的对象。
但是,如果您想要通知某些事物的多个侦听对象,请考虑使用NSNotification注册NSNotificationCenter。缺点是没有正式或声明的协议方法供侦听器遵守(并且编译器会抱怨是否存在任何问题)。
答案 1 :(得分:2)
如果确实需要一组弱委托,您可以使用已初始化CFMutableArray
的桥接NULL
保留并释放回调。