在将另一个对象分配给它的引用之前,是否需要释放我的实例对象?

时间:2011-07-15 13:37:00

标签: iphone objective-c

我有一个NSMutableArray对象(在我的情况下是一些系统)。我正在通过读取XML来为系统请求新数据,并且从中我正在创建一些新系统。在某些情况下,我想更新我的NSMutableArray中的系统,有时不... 因此,当我想要更新时,我说

system = [updatedSystem copy];

(我的系统模型实现了- (id)copyWithZone: (NSZone *) zone

我的问题是,我是否需要在system = [updatedSystem copy];之前发布我的旧系统对象?

即。 [system release];

system = [updatedSystem copy];

2 个答案:

答案 0 :(得分:3)

是的,如果复制它,则必须release,因为复制的对象在从复制功能返回之前不会被释放。

答案 1 :(得分:2)

规则是,无论何时使用init,new或copy,您都将获得释放的所有权。如果您复制了它,则您有责任将其复制。

请参阅Apple的以下文章:http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/MemoryMgmt/Articles/MemoryMgmt.html