applicationWillTerminate: не вызывается - PullRequest
5 голосов
/ 14 сентября 2011

Я использую applicationWillTerminate:, чтобы сохранить кое-что в последнюю минуту.Но проблема в том, что его никогда не вызывают.Если я сделаю что-то подобное в верхней части метода: NSLog(@"Something");, он не вызывается и не выводится на консоль.

Кто-нибудь знает, почему это происходит?

Ответы [ 4 ]

12 голосов
/ 14 сентября 2011

Из документов Apple:

Для приложений, которые не поддерживают фоновое выполнение или связаны с iOS 3.x или более ранней версией, этот метод всегда вызывается, когда пользователь выходит из приложения. Для приложений, которые поддерживают фоновое выполнение, этот метод обычно не называется , когда пользователь выходит из приложения, потому что в этом случае приложение просто переходит в фоновый режим. Однако этот метод может вызываться в ситуациях, когда приложение работает в фоновом режиме (не приостановлено), и система по какой-то причине должна прекратить его.

Если в вашем приложении включен фон, используйте:

- (void)applicationDidEnterBackground:(UIApplication *)application

5 голосов
/ 14 сентября 2011

Используйте applicationDidEnterBackground: вместо.Приложения не закрываются при нажатии кнопки «Домой» в многозадачной системе.

1 голос
/ 19 февраля 2016

шаг 1: команда + shift + h (двойной щелчок (вкладка))

шаг 2: переместить верхнюю часть приложения (убить)

шаг 3: applicationWillTerminate Work

1 голос
/ 14 сентября 2011

Из Руководства по программированию приложений для iOS , касающегося разработки базовых приложений и времени жизни приложения:

Метод applicationWillTerminate: не вызывается, если ваше приложение в настоящий момент приостановлено.

Если вы ссылаетесь на iOS 4.0, вам также следует сохранить данные в applicationDidEnterBackground:.

...