我使用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];
});
此时一切似乎都运转良好,但我仍然不知道为什么第一选择(没有发货)不起作用?
答案 0 :(得分:0)
NSURLConnection
需要运行runloop,默认情况下,主线程上有一个。
但是,如果您在非主线程上运行连接,则需要提供自己的连接。
您可能希望调查使用NSURLConnection
的操作队列(例如,您可以设置委托的NSOperationQueue
或在特定队列上启动异步连接。)