这段代码是不正确的内存管理? (重新NSMutableArray addObject)

时间:2011-05-24 04:03:41

标签: iphone objective-c ios memory-management nsmutablearray

虽然我的iPhone代码没有ANALYZE问题,但当我运行Instruments寻找内存泄漏时,我似乎看到了很多。一个基本上是我使用的自定义类,比如MyCustomClass。乐器基本上说:

来自泄漏块的仪器摘要 - 历史

  • Malloc - 当我创建它时
  • Autorelease - 我和alloc
  • 一样
  • 保留 - 似乎是我将其添加到其他地方的NSMutableArray的地方
  • 发布 - 但是来自GrahicServices - GSEventRunModal(这不是我......)

我已经自动释放了该对象,所以我想知道是否存在通过addObject将其添加到NSMutableArray的方式的问题

问题 - 我的整体问题是,当对NSMutableArray执行“addObject”时,对于自动释放的对象,是否有任何特定步骤接收阵列的代码在完成时需要执行?是否可能即使通过我的对象自动释放,将它添加到数组也会保留,所以当我完成NSMutableArray时,我需要手动迭代数组中的所有对象并释放它们? / p>

感谢

1 个答案:

答案 0 :(得分:2)

如果您已对添加到阵列中的所有对象调用autorelease,那么就内存管理而言,您无需执行任何其他工作。 NSMutableArray将管理添加到其中的对象的内存状态(如在添加时保留它们,并在从数组中删除对象时释放它们,通过显式释放它或当数组是发布)。您需要做的就是确保在完成后释放阵列。