异步NSURLConnection和NSOperation - 取消

时间:2012-09-27 15:08:35

标签: iphone ios xcode cocoa-touch ipad

我想取消所有请求。以下是我创建异步连接的方法:

[NSURLConnection sendAsynchronousRequest:echo queue:self.queue completionHandler:^(NSURLResponse *respone, NSData *data, NSError *error){

然后我使用这个方法:

-(void)cancelAllRequests
{
    NSLog(@"%@",self.queue.operations);
    [self.queue cancelAllOperations];
    [self.queue waitUntilAllOperationsAreFinished];
}

取消所有请求。

除了将BOOL更改为YES之外,实际上什么都不做。

那么我应该如何取消异步连接呢?

2 个答案:

答案 0 :(得分:5)

无法取消使用sendAsynchronousRequest计划的连接。您引用的队列仅用于安排完成处理程序。

如果您想完全控制NSURLConnection,则必须自己实施NSURLConnectionDelegate。可以在https://gist.github.com/3794804

上找到示例实现

答案 1 :(得分:1)

您可以做的是将同步请求放入操作(使用块)。

将NSOperationQueue maxNumberOfConcurrentOperations设置为1(因此它们一次运行一个)。

然后,如果你在队列上运行cancelAllOperations,它将停止任何尚未运行的操作。