当您分配并初始化和对象,然后想要返回该对象时,您应该如何返回它?
我有以下代码:
NSXMLDocument* fmdoc = [[NSXMLDocument alloc] initWithContentsOfURL:trackInfoUrl
options:NSXMLDocumentTidyXML error:&err];
return [fmdoc autorelease];
这是对的吗?
答案 0 :(得分:4)
这是正确的。由于您正在初始化对象,因此您有责任释放或自动发布它。
由于创建时的保留计数为1,并且您希望在调用方法有机会使用该对象之前不将其删除,因此autorelease是要发送的正确消息。
如果您已将其发送,则会立即回收内存。通过发送它自动释放,在默认自动释放池耗尽之前,内存将不会被回收,直到调用方法有机会在需要时保留对象之后才会回收。