2012-02-06 5 views
7

Co się stanie, jeśli blok wykonywany jest asynchronicznie w kolejce tła po zamknięciu aplikacji przez użytkownika? Czy zostanie rozwiązany? Czy to zależy ode mnie w –applicationWillTerminate:?Co stanie się z blokiem uruchomionym w kolejce wysyłkowej GCD, jeśli aplikacja zostanie zakończona?

Nie mówię o długo działających zadaniach. Zastanawiam się tylko, czy istnieje nieodłączne niebezpieczeństwo w robieniu czegokolwiek, co może prowadzić do asynchronicznego niespójnego stanu?

Odpowiedz

2

Wszystkie wątki (utworzono GCD lub nie) są kończone po wyjściu aplikacji, więc tak, blok nie zostanie uruchomiony (nigdy), jeśli jeszcze nie został uruchomiony. Jeśli wykonasz pracę, którą musisz wykonać, zanim aplikacja będzie mogła bezpiecznie wyjść, możesz poczekać na tę opcję w aplikacji Docelowa liczba zakończeń, ale naprawdę nie jest dobrym pomysłem konfigurowanie tego w ten sposób, ponieważ twoja aplikacja może zostać wymuszona przez użytkownika i -PlikacjaWykończenie może nigdy nie zostać uruchomiona.