如果应用程序终止,在GCD Dispatch Queue上运行的Block会发生什么?

hoo*_*oop 7 macos grand-central-dispatch

如果在用户退出应用程序时块在后台队列上异步执行会发生什么?它会被终止吗?是不是我要处理–applicationWillTerminate:

我不是在谈论长时间运行的任务......只是想知道在做任何可能导致异步状态不一致的事情时是否存在固有的危险?

jkh*_*jkh 2

当应用程序退出时,所有线程(无论是否创建 GCD)都会终止,因此,如果该块尚未运行,则不会(永远)运行。如果在应用程序安全退出之前需要完成一些工作,那么您可以在 -applicationWillTerminate 中等待,但以这种方式设置确实不是一个好主意,因为您的应用程序也可能被用户强制退出,并且-applicationWillTerminate 可能永远不会运行。