取消后NSURLConnection无效并立即创建

时间:2014-12-23 10:06:09

标签: ios nsurlconnection

我使用NSURLConnection建立与服务器的长轮询连接,有时,我想取消连接并重新建立连接。起初,我写了这样的代码

[self.connect cancel];
self.connect = [NSURLConnection connectionWithRequest:request delegate:self];
[self.connect start];

但是我发现在取消和启动之后不能再调用连接委托了。 所以我使用发货

[self.connect cancel];
dispatch_async(dispatch_get_main_queue(), ^{
    self.connect = [NSURLConnection connectionWithRequest:request delegate:self];
    [self.connect start];
});

此时一切似乎都运转良好,但我仍然不知道为什么第一选择(没有发货)不起作用?

1 个答案:

答案 0 :(得分:0)

NSURLConnection需要运行runloop,默认情况下,主线程上有一个。

但是,如果您在非主线程上运行连接,则需要提供自己的连接。

您可能希望调查使用NSURLConnection的操作队列(例如,您可以设置委托的NSOperationQueue或在特定队列上启动异步连接。)