Objective-C内存管理(alloc和autorelease)

时间:2010-01-29 20:50:25

标签: objective-c memory-management autorelease

当您分配并初始化和对象,然后想要返回该对象时,您应该如何返回它?

我有以下代码:

NSXMLDocument* fmdoc = [[NSXMLDocument alloc] initWithContentsOfURL:trackInfoUrl
    options:NSXMLDocumentTidyXML error:&err];  
return [fmdoc autorelease];

这是对的吗?

1 个答案:

答案 0 :(得分:4)

这是正确的。由于您正在初始化对象,因此您有责任释放或自动发布它。

由于创建时的保留计数为1,并且您希望在调用方法有机会使用该对象之前不将其删除,因此autorelease是要发送的正确消息。

如果您已将其发送,则会立即回收内存。通过发送它自动释放,在默认自动释放池耗尽之前,内存将不会被回收,直到调用方法有机会在需要时保留对象之后才会回收。