Симулятор iPhone и приложениеWillTerminate ()

Когда мое приложение запускается в симуляторе iPhone, метод делегата

- (void)applicationWillTerminate:(UIApplication *)application

вызывается только при первом нажатии кнопки «Домой» симулятора iPhone.

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

Что здесь происходит? Я неправильно понимаю что-то фундаментальное?


person firstresponder    schedule 15.12.2008    source источник


Ответы (2)


Я подозреваю, что он вызывается, но вы запутались, потому что после того, как вы нажали кнопку «Домой» в симуляторе, вы завершили текущий сеанс в Xcode. У вас наверняка есть NSLog в вашем applicationWillTerminate: методе, да? После того, как вы нажмете кнопку «Домой», NSLogs больше не будут отображаться в консоли запуска Xcode. Если вы откроете /Applications/Console.app, я ожидаю, что они там появятся.

person Lily Ballard    schedule 15.12.2008
comment
Да вы правы. Вызовы NSLog () не появляются после первого возврата на главный экран. Однако все остальные вызовы функций, вызываемые делегатом, продолжают работать в обычном режиме. Спасибо! - person firstresponder; 15.12.2008
comment
Xcode больше не обращает внимания на вывод журнала из симулятора iPhone после того, как вы завершите программу и вернетесь в Springboard. Все по-прежнему работает точно так же, за исключением того, что выходные данные не попадают в журнал выполнения Xcode. - person Lily Ballard; 15.12.2008
comment
Можно ли различить (завершение работы приложения из-за телефонного звонка и возобновление его из предыдущего состояния) и (запуск приложения)? - person srikanth rongali; 12.05.2010

- (void)applicationWillTerminate:(UIApplication *)application

вызывается, когда приложение "завершается". Если вы используете iOS, то приложение НЕ будет завершаться при нажатии кнопки «Домой», если только вы не отключили многозадачность для своего приложения или у пользователя нет «поддерживающего многозадачность» устройства.

- (void)applicationDidEnterBackground {

теперь используется, когда пользователь нажимает кнопку «Домой». Если (как я уже сказал) вы не отключили многозадачность для своего приложения или у пользователя нет устройства с «поддержкой многозадачности».

person Linuxmint    schedule 07.12.2010