我不清楚waitUntilDone做了什么,但我找到了这个帖子:
What is the significance of WaitUntilDOne in performSelectorOnMainThread?
这让我有点清楚,但是,如果我执行一些选择器使NSURLConnection(这是异步)并且waitUntilDone设置为YES,那么会发生什么?它会等待方法执行,但该方法实际上做了一些异步操作(即NSURLConnection),那么有什么影响呢?
谢谢!
答案 0 :(得分:0)
NSURLConnection是异步的。您的代码在主线程上运行,随着下载的进行,它会向您发出委托调用。您不需要也不应该从后台线程运行NSURLConnection。
如果您有需要在后台线程上运行的代码,则可以使用preformSelectorOnMainThread方法将消息从工作线程发送到主线程。执行此操作的一个常见原因是您无法从后台线程更新UI。您将调用一个方法来更新主线程上的UI。
标志waitUntilDone控制performSelectorOnMainThread调用后发生的事情。如果waitUntilDone为false,则后台线程继续使用下一行,而不等待主线程上的代码完成。
如果waitUntilDone为true,则后台线程将阻塞,直到主线程完成执行您发送它的选择器为止。