这是一个纯粹的理论问题,因此请随意提出额外的限制或建议讨论的替代问题。
我知道在 Objective-C 中几乎所有可变的属性都应该定义为 (nonatomic, copy)
,但是如果我希望该属性(例如可变数组)仅是只是指向已被其他类保留的对象的弱指针列表?例如,假设我有一个名为 Concept
的类,并且假设所有预期的 Concept
实例已由某些人加载并保留在内存中的某个位置Concept
之外的类。假设我们向每个名为 latedConcepts
的 Concept
实例添加一个非原子 NSMutableArray
属性,该属性指向保留的其他 Concept
实例并且已经存在于内存中。
我知道 NSArray 是强引用对象的列表,但我想要一个弱引用对象的列表。我该如何实现这个?
最佳答案
NSArray 始终保留对其每个项目的强引用。这是设计使然,因为数组以 nil 终止,并且如果其中一项变为 nil,就会被损坏。您所指的弱项仅适用于数组引用本身。将“弱”项保留在数组中是一个高级问题。我当前的解决方案涉及使用弱代理对象,这听起来有点像您在上一段中描述的内容。是否使用文案并不重要。
我发现在某些情况下保留弱引用数组会派上用场。我不得不使用弱代理推出自己的解决方案。基本上,您有一个对象数组,这些对象对您真正关心的对象具有弱引用。然后,弱代理需要将对它的所有调用重定向到它所包装的对象。
关于objective-c - 使用弱指针的 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531643/