Wywoływane operacje składowania na applicationDidEnterBackground:
Dokumentacja Apple„Stany aplikacji i wielozadaniowość” (Sekcja „Co robić podczas przemieszczania się w tle”) powiedzieć, aby zapisać, gdy aplikacja przejdzie do tła:
Zapisz dane użytkownika i informacje o stanie aplikacji. Wszystkie niezapisane zmiany powinny zostać zapisane na dysku podczas wchodzenia w tło. Ten krok jest konieczny, ponieważ twoja aplikacja może zostać cicho zabita, będąc w tle z wielu powodów. W razie potrzeby możesz wykonać tę operację z wątku w tle.
Kiedy rozpoczynam wysyłaną operację, np. do oszczędzania, które zajmuje trochę czasuapplicationDidEnterBackground:
podobnie jak poniżej nie otrzymuję wyjścia NSLog po naciśnięciu przycisku home. Po powrocie do aplikacji pojawia się wyjście NSLog.
- (void)applicationDidEnterBackground:(UIApplication *)application {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self performOperation];
NSLog(@"Operation finished");
});
}
Czy mogę być pewien, żeperformOperation
metoda została wykonana całkowicie lub przerwała, gdy aplikacja weszła w tryb uśpienia?