Iphone 如何在iOS中取消后台的所有NSURLConnection
我正在使用NSURLCOnnections下载一些图像(大约200-300张拇指图像)。我有这些图像的URL数组。连接开始下载这些图像。但在某些情况下,我想取消所有这些下载。这是怎么可能的。我可以取消所有这些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
[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,也许这会更好