objective-c - 使用弱指针的 N​​SMutableArray

标签 objective-c memory-management properties attributes

这是一个纯粹的理论问题,因此请随意提出额外的限制或建议讨论的替代问题。

我知道在 Objective-C 中几乎所有可变的属性都应该定义为 (nonatomic, copy),但是如果我希望该属性(例如可变数组)仅是只是指向已被其他类保留的对象的弱指针列表?例如,假设我有一个名为 Concept 的类,并且假设所有预期的 Concept 实例已由某些人加载并保留在内存中的某个位置Concept 之外的类。假设我们向每个名为 latedConceptsConcept 实例添加一个非原子 NSMutableArray 属性,该属性指向保留的其他 Concept 实例并且已经存在于内存中。

我知道 NSArray 是强引用对象的列表,但我想要一个弱引用对象的列表。我该如何实现这个?

最佳答案

NSArray 始终保留对其每个项目的强引用。这是设计使然,因为数组以 nil 终止,并且如果其中一项变为 nil,就会被损坏。您所指的弱项仅适用于数组引用本身。将“弱”项保留在数组中是一个高级问题。我当前的解决方案涉及使用弱代理对象,这听起来有点像您在上一段中描述的内容。是否使用文案并不重要。

我发现在某些情况下保留弱引用数组会派上用场。我不得不使用弱代理推出自己的解决方案。基本上,您有一个对象数组,这些对象对您真正关心的对象具有弱引用。然后,弱代理需要将对它的所有调用重定向到它所包装的对象。

关于objective-c - 使用弱指针的 N​​SMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531643/

相关文章:

ios - 使用现有字符串作为 valueForKey 值

objective-c - 压缩/解压内存中的字符串

ios - 加速度计的性能问题

c++ - Qt析构函数调用关闭的小部件

java - 如何在构建服务器和开发人员的机器上使用不同的属性文件集?

iphone - libxml2.2.dylib 造成大量内存泄漏

iphone - 关系中的核心数据总和

ios AppDelegate 属性声明

c++ - C/C++ malloc/免费。对多个分配使用一个指针 - 坏主意?

ios - 将自动释放对象分配给保留属性是否会增加其保留计数?