取消 NSURLConnection 以 sendAsyncRequest:queue:completionHandle


  1. 是否可以取消以sendAsynchronousRequest:queue:completionHandler:开头的NSURLConnection

  2. 为什么sendAsynchronousRequest:queue:completionHandler:不返回它创建的NSURLConnection对象,以便我可以取消它?

编辑 - 由于我提供的答案似乎是错误的,您应该查看以下相关问题及其答案:

如何通过 NSURLConnection sendAsynchronousRequest 取消异步调用?

旧答案:

在类的标头(例如 ViewController)中,声明一个操作队列:

NSOperationQueue *downloadOperationQueue;

要下载文件,请调用如下所示的内容:

downloadOperationQueue = [[NSOperationQueue alloc] init];
NSURLRequest *fileRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/images/nav_logo114.png"]
                                             cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData
                                         timeoutInterval:10];
[NSURLConnection sendAsynchronousRequest:fileRequest
                                   queue:downloadOperationQueue
                       completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                           NSLog(@"download successful");
                       }];

要稍后在电话中取消下载:

[downloadOperationQueue cancelAllOperations];

最新更新