Apple 的 NSCopying文档状态copyWithZone:
返回一个由发件人隐式保留的对象。因此,当将该对象添加到 anNSMutableArray
时,似乎应该向该对象发送一条autorelease
消息以保持保留计数平衡(因为数组将保留该对象)。
因此,要将一个数组的内容深度复制到另一个数组,我希望是这样的:
NSMutableArray *destination = [NSMutableArray array];
// assume MyObject adopts NSCopying
for (MyObject *obj in myArray)
[destination addObject:[[obj copy] autorelease]];
但是我在这个答案中注意到了一种不同的方法。似乎[ret addObject:[val copy]]
是内存泄漏。但是我是新手,NSCopying
所以我想我会问:将复制的对象添加到数组时,是否应该向对象发送自动释放消息以保持保留计数平衡?
编辑 - 更多信息:Clang 报告删除自动释放后潜在的内存泄漏。也许链接的答案假定copy
返回一个未由发件人隐式保留的对象。