Objective c 正确处理[[NSURLConnection alloc]initWithRequest:…]

Objective c 正确处理[[NSURLConnection alloc]initWithRequest:…],objective-c,ios,nsurlconnection,Objective C,Ios,Nsurlconnection,这听起来可能是个新手问题,但我对iOS开发还不熟悉 我在导航控制器中按下了一个视图,在该视图中单击某个按钮,我运行以下代码 mUploadeImageConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES]; [request release]; if (mUploadeImageConnection) { mUploadImageResponseDa

这听起来可能是个新手问题,但我对iOS开发还不熟悉

我在导航控制器中按下了一个视图,在该视图中单击某个按钮,我运行以下代码

mUploadeImageConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
[request release];
if (mUploadeImageConnection) {
    mUploadImageResponseData = [[NSMutableData data] retain];
} else {
[mUploadeImageConnection release];
}
我还实现了以下连接状态处理方法

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
当我发出
mUploadeImageConnection
请求时,需要一些时间才能得到响应。但我没有等待回复并按下导航返回按钮,即弹出视图,但我仍然可以使用四个连接处理功能,尽管发送
mUploadeImageConnection
请求的视图被弹出。在
didFailWithError
的情况下,我会显示一些alertView,在这种情况下显示起来会很奇怪,即显示关于某个已弹出视图(不可见/用户来到以前的视图)的alerView

现在我的问题是

  • 处理这种情况的最佳做法是什么
  • 如何使我的四个功能停止
如果要停止请求,请将NSURLConnection保留在变量中并调用

[myConnection cancel];
当用户单击后退按钮时

例如,您可以使用delegate方法在导航控制器的委托中调用cancel

– navigationController:willShowViewController:animated:

通过测试将要显示的viewController是否是您的rootViewController。

Hah,谢谢,非常简单的解决方案,我真的需要更多的练习:)不用担心,乐于帮助=)请毫不犹豫地投票并验证我的答案!