2

我正在使用 NSURLCONnections 下载一些图像(大约 200-300 个拇指图像)。我有这些图像的 url 数组。连接开始下载这些图像。但在某些情况下,我想取消所有这些下载。怎么可能。我可以取消所有这些 NSURLConnections。

4

3 回答 3

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

于 2013-02-22T07:21:30.130 回答
2

[connection cancel]用于取消一个 NSURLConnection。

于 2013-02-22T07:11:53.363 回答
0

我会NSURLConnection结合使用同步NSOperationQueue来下载数据:

[queue addOperationWithBlock:^{
    NSData *data = [NSURLConnection
        sendSynchronousRequest:…
        returningResponse:… error:…];
}];

这样,您可以轻松控制并发下载的数量并使用[queue cancelAllOperations]. 请注意,取消队列不会停止已经开始的下载,但如果您只下载小缩略图并且有相当大的并发下载限制,那将不是问题。

同步NSURLConnection模式的优点是比异步委托 API 更易于使用。

于 2013-02-22T07:52:36.897 回答