使用NSURLConnection时,我可以在实例化它的方法结束时释放它吗?
NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
...
...
[connection release];
然后它继续异步过程,还是我需要保留它?
答案 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;