【发布时间】:2014-07-02 12:55:05
【问题描述】:
这是一个纯粹的理论问题,因此请随时提出额外的限制或提出替代问题进行讨论。
我知道在 Objective-C 中几乎所有可变的属性都应该定义为 (nonatomic, copy),但是如果我希望该属性(例如可变数组)只是一个指向对象的弱指针列表呢?被其他班级保留?例如,假设我有一个名为Concept 的类,假设所有 预期的Concept 实例已经被Concept 以外的某个类加载并保留在内存中。假设我们向每个名为relatedConcepts 的Concept 实例添加一个非原子NSMutableArray 属性,该属性指向保留并已存在于内存中的其他Concept 实例。
我知道 NSArrays 是强引用对象的列表,但我想要一个弱引用对象的列表。我该如何实施呢?
【问题讨论】:
-
@CrimsonChris 想要一个弱指针列表是否合理,如果是,你将如何去做?
-
顺便说一句,您介意发表您的评论作为答案,以便我将其标记为正确吗?您的评论很有帮助
-
我发现在一些场景中,保留一组弱引用会派上用场。我不得不为此使用弱代理推出自己的解决方案。基本上,你有一个对象数组,然后对你真正关心的对象有一个弱引用。然后弱代理需要将所有对它的调用重定向到它包装的对象。
-
“多代表”解决方案确实是这样一种场景。
-
这是使用通知的替代方法。有了足够的封装,它就更干净了。我喜欢能够说
[objectThatHasManyDelegates addDelegate:self],这就结束了。
标签: objective-c memory-management properties attributes