正确使用NSURLConnection

时间:2012-05-29 08:11:09

标签: objective-c ios nsurlconnection

使用NSURLConnection时,我可以在实例化它的方法结束时释放它吗?

NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
...
...
[connection release];

然后它继续异步过程,还是我需要保留它?

4 个答案:

答案 0 :(得分:2)

完成后需要释放连接对象。

NSURLConnection委托方法中发布此内容 -

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 

答案 1 :(得分:0)

您应该通过"分配"来保持连接,原因是:您需要管理连接,例如:取消它。

答案 2 :(得分:0)

我真的建议您尽可能使用便利分配器。你得到的对象是自动释放的意思(简单来说)你不必担心手动释放或保留。用更多经验法则回答你的问题:使用

connectionWithRequest:delegate:

你很高兴。

答案 3 :(得分:0)

最好的方法是使用connectionWithRequest:Delegate:以便它自动释放。

但是,您应该保留一个指向NSURLConnection的指针,直到连接结束才有机会使委托为空。否则,如果您的连接未返回但您的委托在被连接调用之前被取消分配,则它将崩溃。 (您将收到错误:发送到解除分配的实例的消息)

所以最好是保持指向NSURLConnection的指针,并在连接返回时将指针设置为nil。所以在ConnectionDidFinishLoading

connection = nil;

现在,如果代理被解除分配,你可以在dealloc方法或viewDidUnload中添加一些内容,如果你的委托是一个viewController

if (connection != nil) connection.delegate = nil;