applicationWillTerminate: не вызывается

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

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


person TheHAWK    schedule 14.09.2011    source источник


Ответы (4)


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

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

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

- (void)applicationDidEnterBackground:(UIApplication *)application

person zaph    schedule 14.09.2011
comment
Почему мой метод didEndCustomizingItems также не вызывается, когда я помещаю в него NSLog, он ничего не выводит. - person TheHAWK; 14.09.2011
comment
Важное предостережение: по крайней мере в iOS 6 applicationWillTerminate: вызывается без приложения, когда-либо работавшего в фоновом режиме, если пользователь выключает устройство, когда приложение все еще находится на переднем плане. - person smorgan; 08.03.2013

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

person jrturton    schedule 14.09.2011
comment
Не applicationWillEnterBackground:, такого метода не существует, используйте applicationDidEnterBackground: - person zaph; 14.09.2011
comment
@CocoaFu: спасибо за это, исправлено - person jrturton; 14.09.2011

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

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

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

person Mats    schedule 14.09.2011

Шаг 1: команда + Shift + H (двойной щелчок (вкладка))

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

шаг 3: приложение завершит работу

person gowthaman-mallow    schedule 19.02.2016