1

我理解在 iOS 的委托模式中你希望对委托的引用是弱的,但是如果我有这个:

@property (nonatomic, weak) NSMutableArray *delegates;

在这个数组中是

id<myDelegateCallback>

Array 对里面的项目有很强的保留。

我是在具有此属性的类中分配/初始化数组还是将数组设置为另一个类拥有的实例?

或者这不是委托模式的一个很好的实现?我知道我可以使用通知等,但想知道这是否真的可以在没有任何 ARC 问题的情况下工作。

4

2 回答 2

2

您只能有一个指定的委托对象,而不是一组委托。一些类有一个委托和一个符合独特协议的“数据源”,但这仅对需要从某个指定位置获取其内容的对象有意义。

但是如果你想通知几个监听对象发生了一些事情,可以考虑使用注册到NSNotificationCenter的NSNotification。缺点是没有正式的或声明的协议方法供侦听器遵循(如果有任何问题,编译器也会抱怨)。

这是一个相关问题,其中包含更多有用信息

于 2013-04-04T00:50:38.370 回答
2

如果你真的需要一组弱委托,你可以使用一个带有保留和释放回调的桥接CFMutableArray初始化。NULL

在此处查看更多信息:https ://developer.apple.com/library/mac/#documentation/CoreFOundation/Reference/CFMutableArrayRef/Reference/reference.html#//apple_ref/doc/uid/20001502

于 2013-04-04T00:54:10.773 回答