使用 NSURLConnection 时,我可以在实例化它的方法结束时释放它吗?
NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
...
...
[connection release];
然后它继续异步过程,还是我需要保留它?
使用 NSURLConnection 时,我可以在实例化它的方法结束时释放它吗?
NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
...
...
[connection release];
然后它继续异步过程,还是我需要保留它?
完成后需要释放连接对象。
NSURLConnection
在委托方法中释放它-
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
最好的方法是使用 connectionWithRequest:Delegate: 以便它自动释放。
但是,您还应该保留指向您的 NSURLConnection 的指针,直到连接结束才有机会取消委托。否则,如果您的连接没有返回但您的委托在被连接调用之前被释放,它将崩溃。(你会得到错误:消息发送到已释放的实例)
所以最好的办法是保留一个指向你的 NSURLConnection 的指针,并在连接返回时将指针设置为 nil 。所以在 ConnectionDidFinishLoading
connection = nil;
现在,如果委托被解除分配,您可以在 dealloc 方法中放置一些东西,如果您的委托是 viewController,则可以在 viewDidUnload 中放置一些东西
if (connection != nil) connection.delegate = nil;
您应该通过“分配”来保持连接,原因是:您需要管理连接,例如:取消它。
我真的建议您尽可能使用便利分配器。您返回的对象是自动释放的意思(简单来说)您不必担心手动释放或保留。要使用经验法则回答您的问题:使用
connectionWithRequest:delegate:
你可以走了。