как я могу сохранить в userdefaults, если мое приложение упало - PullRequest
0 голосов
/ 07 июня 2011

В моем Universal-приложении у меня есть некоторые проблемы, когда приложение вылетает.Я не смог воспроизвести причину сбоя, поэтому я хочу, по крайней мере, заставить приложение «сохранить», чтобы оно могло перезапуститься снова, если оно упало.Проблема в том, что, если мое приложение падает, может случиться так, что оно не может быть запущено снова из-за испорченных пользовательских настроек по умолчанию.Так что, если бы я мог удалить свои пользовательские настройки по умолчанию после сбоя моего приложения во время запуска, пользователь мог бы по крайней мере использовать приложение далее.

Пока для моих целей.Теперь мне нужно только знать, как я могу обнаружить и сохранить его, когда мое приложение рухнуло во время запуска.

Мое первое намерение состояло в том, чтобы установить флаг в пользовательских настройках по умолчанию при сбое приложения и затем, если флагустановить, чтобы сбросить настройки пользователя по умолчанию.Но я не знаю, будет ли вызываться (void)applicationWillTerminate:(UIApplication *)application
при сбое моего приложения.И даже если это называется.Как я могу определить, произошел ли сбой во время запуска?

Будут приветствоваться любые предложения.

Привет и спасибо заранее Maverick1st

Ответы [ 3 ]

6 голосов
/ 07 июня 2011

А как насчет установки флага каждый раз, когда ваше приложение запускается, и сброса его, когда он нормально завершается?Таким образом, вы узнаете, установлено ли оно уже при запуске приложения, в последний раз оно падало.

4 голосов
/ 07 июня 2011

Одна из особенностей ненормального выхода - это, ну, в общем, ненормальное .Как правило, не стоит полагаться на то, что в таких случаях можно делать что-то разумное.

Вместо того, чтобы пытаться установить флаг в случае сбоя, который в лучшем случае будет ненадежным, как насчет установки этого, когдазапустить и затем сбросить это когда выйдешь нормально?Таким образом, он останется установленным, если вы не убрали вещи, и вы узнаете при следующем запуске.

0 голосов
/ 07 июня 2011

Одна мысль ... оберните ваш основной стартовый код в делегате приложения в блок @Try @Catch, чтобы обработать исключение, вызывающее сбой. Выполните там любой последний код (например, установите свой флаг).

...