【问题标题】:Asynchronous NSURLConnection and NSOperation - cancelling异步 NSURLConnection 和 NSOperation - 取消
【发布时间】:2012-09-19 10:11:41
【问题描述】:

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

[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 之外,实际上什么都不做。

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

【问题讨论】:

    标签: iphone ios xcode cocoa-touch ipad


    【解决方案1】:

    不能取消使用sendAsynchronousRequest 安排的连接。您所指的队列仅用于调度完成处理程序。

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

    上可以找到一个示例实现

    【讨论】:

    • 我会在几分钟内分享一个要点。
    【解决方案2】:

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

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

    然后,如果您在队列上运行 cancelAllOperations,它将停止所有尚未运行的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      相关资源
      最近更新 更多