Objective c 在performSelectorOnMainThread中WaitUntilDOne的意义是什么?

Objective c 在performSelectorOnMainThread中WaitUntilDOne的意义是什么?,objective-c,ios,nsobject,Objective C,Ios,Nsobject,performselectornmainthread中的WaitUntilDOne的意义是什么 将YES或NO设置为WaitUntilDone可以在应用程序上以何种方式显示 更新: 我的问题应该是:在什么样的情况下,它们会起作用 塞吉奥的回答正是我所期待的。如果你说否,performSelectorOnMainThread不会阻塞,并且会在performSelectorOnMainThread之后立即执行下一行代码,而不用等待主线程执行选择器 如果您说YES,则调用performselector

performselectornmainthread
中的
WaitUntilDOne
的意义是什么

YES
NO
设置为
WaitUntilDone
可以在应用程序上以何种方式显示

更新:

我的问题应该是:在什么样的情况下,它们会起作用


塞吉奥的回答正是我所期待的。

如果你说
performSelectorOnMainThread
不会阻塞,并且会在
performSelectorOnMainThread
之后立即执行下一行代码,而不用等待主线程执行选择器


如果您说
YES
,则调用
performselectornmainthread
的线程将阻止该行的执行,直到主线程执行了选择器,然后它将继续执行。

YES表示当前线程将阻止/等待选择器的执行,NO to have
performSelectorOnMainThread:withObject:waitUntilDone:
立即从以下位置返回:

一个布尔值,指定在主线程的接收器上执行指定的选择器之前,当前线程是否阻塞。指定“是”以阻止此线程;否则,请指定NO以立即返回此方法。 如果当前线程也是主线程,并且您为此参数指定了“是”,则会立即传递和处理消息


您必须关注哪个线程正在执行
performSelectorOnMainThread
。该线程将阻塞并等待主线程完成该选择器;例如,工作线程需要向主线程发送消息(例如,将一些信息存储到某个不安全的中央存储)。在发出另一个同类操作之前,工作进程可能希望阻塞并等待操作完成。因此,
waitUntilDone
在这种情况下非常有用

通常,您希望避免使用
YES
阻塞当前线程的执行

如果
NO
,则消息将添加到主线程的运行循环的待办事项列表中,待运行循环恢复时执行——这可能很快就会立即/同时执行