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 haveperformSelectorOnMainThread:withObject:waitUntilDone:
立即从以下位置返回:
一个布尔值,指定在主线程的接收器上执行指定的选择器之前,当前线程是否阻塞。指定“是”以阻止此线程;否则,请指定NO以立即返回此方法。
如果当前线程也是主线程,并且您为此参数指定了“是”,则会立即传递和处理消息
您必须关注哪个线程正在执行
performSelectorOnMainThread
。该线程将阻塞并等待主线程完成该选择器;例如,工作线程需要向主线程发送消息(例如,将一些信息存储到某个不安全的中央存储)。在发出另一个同类操作之前,工作进程可能希望阻塞并等待操作完成。因此,waitUntilDone
在这种情况下非常有用 通常,您希望避免使用YES
阻塞当前线程的执行
如果NO
,则消息将添加到主线程的运行循环的待办事项列表中,待运行循环恢复时执行——这可能很快就会立即/同时执行