Что происходит с блоком, работающим в очереди отправки GCD, если приложение завершается? - PullRequest
7 голосов
/ 06 февраля 2012

Что произойдет, если блок выполняется в фоновой очереди асинхронно, когда пользователь выходит из приложения? Будет ли это прекращено? Это до меня, чтобы справиться с –applicationWillTerminate:?

Я не говорю о долго выполняющихся задачах ... просто интересно, существует ли врожденная опасность при выполнении чего-либо, что могло бы привести к асинхронному состоянию?

1 Ответ

2 голосов
/ 07 февраля 2012

Все потоки (созданные GCD или нет) завершаются при выходе из приложения, поэтому да, блок не будет запущен (никогда), если он еще не был. Если есть работа, которая должна быть завершена, прежде чем приложение сможет безопасно завершить работу, вы можете подождать этого в -applicationWillTerminate, но на самом деле это не очень хорошая идея, так как ваше приложение может быть принудительно завершено пользователем и -applicationWillTerminate может никогда не запускаться.

...