值得一提的是Cocoa Memory Management Rules 。 如果你是在非GC环境中工作,例如 简言之,这总是值得一提。
基本规则规定:
如果你使用一种名称为“准许”或“新”或包含“范围”的方法(例如,所有物体、新物体或变幻剂),或如果你发出保留信息,你就拥有物体的所有权。 你负责放弃对你自己使用释放或自动释放的物体的所有权。 任何其他时候,你们都不得释放。
显然,你没有发现任何东西、新东西或含有复制件。 因此,你不拥有否决权。
在您的《法典》中,第二版的编码也相关:
所收到的物体通常保证在所收到方法中继续有效(例外包括多读申请和一些批发的物体情况,,但如您更改所收到的另一物体的物体,你也必须谨慎行事)。 这种方法也可以安全地将物体送回其援引人。
我 bold了相关部分。 你修改了所收到的物体的阵列,从而可能消失。 您要么保留该物体,要么在从阵列中删除,要么在你用该物体完成后去除。
实际上,你might甚至在你问题中的代码上是安全的,因为NSMutable Array 执行标的AtIndex:might在保留之后,就归还项目自动释放。 在一个多面的环境中,这将是保证物体在足够长的时间里仍然有效,以便返回打电话者的唯一途径。 然而,我看不到国家安全局的法典,也不依赖它。
ETA: 只是看看看透式方案规划指南,看来NSMutableAtrray没有保留,是自动释放。