NSURLConnection和sendAsynchronousRequest:queue:completionHandler: - 完成块是否在主线程中运行

时间:2012-11-18 12:43:53

标签: ios asynchronous nsurlconnection

如果我将NSURLConnectionsendAsynchronousRequest:queue:completionHandler:一起使用,我是否需要在完成处理程序中采取任何特定的预防措施?具体来说,是通过NSURLConnection直接异步发送与使用dispatch_async相同/相似,因为完成块需要返回主线程与UI交互?

例如:在使用dispatch_async与UI进行互动(可能是错误的词)后,应用必须使用performSelectorOnMainThread

这是sendAsynchronousRequest:queue:completionHandler:的一个考虑因素吗?

注意:我发现了类似的问题,但没有具体说明。例如,在Does NSURLConnection block the main thread? indiekiduk明确指出它是一个新的线程,虽然是一个内部的 - 我认为这是有缺陷的,因为我认为它只是在运行循环的结束 - 但我仍在学习和可能/可能是错误的。

2 个答案:

答案 0 :(得分:5)

NSURLConnection

的队列参数的sendAsynchronousRequest:queue:completionHandler:个州的文档
  

队列
  当请求完成或者> 1时,调度处理程序块的操作队列。失败。

该块将在传入的队列中设置的任何线程上执行。

答案 1 :(得分:0)

NSURLConnection sendAsync安排在AFAIK上的线程的RunLoop上 所以在你启动它的线程中调用该块