2

该文档没有说明任何内容。当一个旧对象被“移除”并且一个新对象进入它的位置时,旧对象会发生什么?我必须自己释放吗?

4

3 回答 3

12

不,您不必自己释放它。

如果被替换对象的保留计数等于 0,您可能会收到错误消息。

新对象被保留。旧对象被释放。

于 2009-05-25T12:38:00.657 回答
3

您不必释放它。

您没有对其执行alloc复制保留,因此不对内存负责 - 文档非常清楚。

我不希望 Apple 为 SDK 中的每个方法记录内存管理过程,除非它违反了他们已经设置的内存管理规则。如果文档没有说明任何内容,您可以假设默认规则适用。

于 2009-05-25T12:45:13.827 回答
1

该文档在文件顶部非常清楚地说明了这一点:

与 NSArray 一样,NSMutableArray 的实例维护对其内容的强引用。如果不使用垃圾回收,当您将对象添加到数组时,该对象会收到一条保留消息。当一个对象从一个可变数组中移除时,它会收到一条释放消息。如果没有对该对象的进一步引用,这意味着该对象已被释放。如果您的程序保留对此类对象的引用,则除非您在对象从数组中删除之前向该对象发送保留消息,否则该引用将变为无效。

对每种方法都重复记录这一点是没有意义的。

于 2009-05-25T21:49:16.837 回答