Iphone 如何在iOS中取消后台的所有NSURLConnection

Iphone 如何在iOS中取消后台的所有NSURLConnection,iphone,ios,objective-c,Iphone,Ios,Objective C,我正在使用NSURLCOnnections下载一些图像(大约200-300张拇指图像)。我有这些图像的URL数组。连接开始下载这些图像。但在某些情况下,我想取消所有这些下载。这是怎么可能的。我可以取消所有这些NSURLConnection吗。[connection cancel]用于取消NSURLConnection。最好创建NSOperationQueue并通过此队列使用NSURLConnection 例如: NSOperationQueue *queue = [NSOperationQueu

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

[connection cancel]
用于取消NSURLConnection。

最好创建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

我将使用同步
NSURLConnection
NSOperationQueue
来下载数据:

[queue addOperationWithBlock:^{
    NSData *data = [NSURLConnection
        sendSynchronousRequest:…
        returningResponse:… error:…];
}];
通过这种方式,您可以轻松控制并发下载的数量,并使用
[队列取消所有操作]
取消未完成的下载。请注意,取消队列不会停止已经开始的下载,但是如果您只下载小的缩略图,并且有一个相当好的并发下载限制,那么这不会是一个问题


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

是否保留指向所有工作连接的指针?也许您最好维护一组或一组当前连接,这样就可以创建一个[connection cancel]、[connection release]循环;这很容易。它不是在同一个班。如何获取连接对象。还有一个
NSBlockOperation
,它可能也很方便。@nielsbot您完全正确。可以将NSBlockOperation替换为NSBlockOperation,也许这会更好