NSURLConnection泄漏

时间:2009-11-26 22:39:35

标签: iphone sdk nsurlconnection

我正在关注正式的Apple样本

http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

在使用Instruments检查我的代码时,我发现了由未释放的NSURLRequest引起的泄漏。我现在已经在

之后不久加入了[request release]
NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request delegate:self];     

它似乎有效。我是对的吗?

问候

2 个答案:

答案 0 :(得分:2)

请求是自动释放的,这意味着自动释放池应该负责释放它。如果您在Cocoa应用程序中使用它,您应该自动设置自动释放池,以处理释放自动释放的对象。

如果您正在使用非可可应用程序,则必须自己进行设置,并确保释放/排空池以释放对象。

通常,您只需要发布使用alloccopymutableCopy或您发送retain的对象。这意味着您必须释放使用[[NSURLConnection alloc] init...创建的连接对象,否则会导致泄漏。

以下是有关Autorelease Pools

的文档的链接

答案 1 :(得分:0)

啊,我明白了。出于某些原因,我将“官方”样本与我自己的实现混合在一起:)在我的代码中我这样做:

NSURLRequest *request = [[NSURLRequest alloc] initWithURL: url];

这当然要发布了。我上面提到的样本表现不同。昨晚似乎相当迟了。

但是,非常感谢您的回答。

有一件事让我发疯:如果有人回答我的问题,我没有收到电子邮件通知,虽然我已经设置了标记......

此致