applicationWillTerminate не вызывается, когда приложение остановлено из Xcode

У меня возникла странная проблема, когда - (void)applicationWillTerminate:(UIApplication *)application{} и - (void)applicationDidEnterBackground:(UIApplication *)application{} не вызываются, когда я пытаюсь остановить приложение из Xcode, а не с помощью кнопки «Домой».


person Ksinak    schedule 08.02.2011    source источник
comment
Такое поведение имеет смысл, поскольку Xcode не является кнопкой «Домой».   -  person Moshe    schedule 08.02.2011
comment
Я пытаюсь смоделировать ситуацию, когда мне нужно выполнить действия с файлом, когда я доберусь до applicationWillTerminate. Когда я останавливаю работающее приложение, оно не вызывает applicationWillTerminate, потому что оно завершает работу приложения.   -  person Ksinak    schedule 08.02.2011
comment
@моше: Спасибо. Я думаю, теперь я понимаю, что после закрытия работающего приложения из xcode убивает все приложение и, следовательно, дальнейшего вызова нет.   -  person Ksinak    schedule 08.02.2011
comment
Я опубликую ответ. Вы должны выбрать несколько ответов, если они помогли вам, чтобы люди были мотивированы помочь вам.   -  person Moshe    schedule 08.02.2011
comment
Возможный дубликат Почему приложение не останавливается в симуляторе iOS триггер applicationWillTerminate:?. Это старый вопрос, но оба ответа на этот и дублирующий вопрос хороши... Я думаю, что другой ответ лучше.   -  person Honey    schedule 26.10.2017


Ответы (1)


Такое поведение ожидаемо, поскольку Xcode не является кнопкой «Домой» на вашем устройстве iOS.

Если вы нажмете «Создать и запустить», например, во время тестирования другого приложения, вам будет предложено завершить первое приложение. Если вы это сделаете, то первое приложение закроется, как будто оно никогда не открывалось. Похоже, это следствие песочницы приложения.

Аналогичным образом, если вы нажмете кнопку «Домой» во время тестирования приложения на многозадачном устройстве, приложение продолжит работать в фоновом режиме и не вызовет applicationWillTerminate. Однако ваше устройство должно вызвать applicationDidEnterBackground.

person Moshe    schedule 08.02.2011
comment
Спасибо за понимание!!! Да, я столкнулся с той же проблемой с моим приложением в многозадачности, и мне пришлось переопределить applicationDidEnterBackground в дополнение к applicationWillTerminate. Это отвечает на мои сомнения. - person Ksinak; 08.02.2011