5

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

我有以下代码:

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

这个对吗?

4

1 回答 1

4

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

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

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

于 2010-01-29T20:53:08.930 回答