我正在使用NSURLCOnnections下载一些图像(约200-300个拇指图像)。我有这些图像的网址数组。连接开始下载这些图像。但在某些情况下,我想取消所有这些下载。怎么可能。我可以取消所有这些NSURLConnections。
答案 0 :(得分:4)
创建NSOperationQueue并通过此队列使用NSURLConnection会更好。
例如:
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(sendRequest)];
- (void) sendRequest {
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
NSURLConnection *theConnection = [[[NSURLConnection alloc] initWithRequest:theRequest delegate:self] autorelease];
...
}
NSOperationQueue有方法cancelAllOperations
答案 1 :(得分:2)
[connection cancel]
用于取消NSURLConnection。
答案 2 :(得分:0)
我会将同步NSURLConnection
与NSOperationQueue
结合使用来下载数据:
[queue addOperationWithBlock:^{
NSData *data = [NSURLConnection
sendSynchronousRequest:…
returningResponse:… error:…];
}];
通过这种方式,您可以轻松控制并发下载的数量,并使用[queue cancelAllOperations]
取消未完成的下载。请注意,取消队列不会停止已经开始的下载,但如果您只下载小缩略图并且具有合适的并发下载限制,这将不会成为问题。
同步NSURLConnection
模式的优点是比异步委托API更容易使用。