NSURLConnection的内存管理

时间:2010-03-22 05:58:27

标签: iphone objective-c cocoa nsurlconnection

很抱歉,如果之前已经提出这个问题,但我想知道NSURLConnection最佳内存管理实践是什么。 Apple的示例代码在一种方法中使用-[NSURLConnection initWithRequest:delegate:],然后在releaseconnection:didFailWithError:中使用connectionDidFinishLoading:,但这会发出一堆分析器警告并且似乎有点危险(如果这些方法都没有被称为?)。

我一直在自动释放(使用+[NSURLConnection connectionWithRequest:delegate:]),这似乎更清晰,但我想知道 - 在这种情况下,是否有可能在连接之前释放NSURLConnection关闭(例如,下载大文件时)?

1 个答案:

答案 0 :(得分:2)

返回自动释放的NSURLConnection

+[NSURLConnection connectionWithRequest:delegate:]

如果您想保留retain所需的引用。完成后releaseautorelease已经autorelease d对象无效。

我认为示例代码会在retain NSURLConnection之后的某个位置,然后在连接失败时release,如示例所示。

这将返回您必须负责清洁的已分配对象

-[NSURLConnection initWithRequest:delegate:]

由于该方法名为init,因此上面的另一个方法在名称或init中没有copy,因此您不必担心内存管理。

如果您的对象在某个时刻在内部创建NSURLConnection,然后在连接完成或失败时release,则应将对nsurlconnection的引用重置为nil

在您的dealloc中,您应该清除NSURLConnection,如果是nil则不会发生任何事情,但如果仍然分配,则会清除它。

apple doc about memory management - 这很简单。