12
  1. 是否可以取消NSURLConnectionstart with sendAsynchronousRequest:queue:completionHandler:

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

4

1 回答 1

5

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

如何通过 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];
于 2012-09-11T13:54:08.250 回答