对于NSURLConnection,performSelectorOnMainThread和waitUntilDone

时间:2012-09-10 00:36:17

标签: objective-c asynchronous nsurlconnection performselector

我不清楚waitUntilDone做了什么,但我找到了这个帖子:

What is the significance of WaitUntilDOne in performSelectorOnMainThread?

这让我有点清楚,但是,如果我执行一些选择器使NSURLConnection(这是异步)并且waitUntilDone设置为YES,那么会发生什么?它会等待方法执行,但该方法实际上做了一些异步操作(即NSURLConnection),那么有什么影响呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

NSURLConnection是异步的。您的代码在主线程上运行,随着下载的进行,它会向您发出委托调用。您不需要也不应该从后台线程运行NSURLConnection。

如果您有需要在后台线程上运行的代码,则可以使用preformSelectorOnMainThread方法将消息从工作线程发送到主线程。执行此操作的一个常见原因是您无法从后台线程更新UI。您将调用一个方法来更新主线程上的UI。

标志waitUntilDone控制performSelectorOnMainThread调用后发生的事情。如果waitUntilDone为false,则后台线程继续使用下一行,而不等待主线程上的代码完成。

如果waitUntilDone为true,则后台线程将阻塞,直到主线程完成执行您发送它的选择器为止。