我有以下块在后台执行请求 如何在请求完成之前取消该请求?
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
NSData *thumbnailData = [NSURLConnection sendSynchronousRequest:request];
...
});
答案 0 :(得分:9)
发送后你无法取消......
您可以使用解决方法,例如:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
__block BOOL isCanceled = NO;
dispatch_async(queue, ^{
if (isCanceled)
return;
NSData *thumbnailData = [NSURLConnection sendSynchronousRequest:request];
...
});
答案 1 :(得分:5)
在将操作添加到队列后,您可以使用更高级别的“NSOperationQueue”,然后您可以取消所有操作。
答案 2 :(得分:4)
你做不到。您必须使用NSURLConnection
的异步接口才能取消请求。