Могу ли я предварительно закрыть свое приложение для iOS? - PullRequest
4 голосов
/ 26 августа 2010

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

Shortиз-за жесткого сбоя приложения с чем-то глупым, как *(unsigned int *)0 = 0xDEADBEEF, я не могу найти API в Какао, который вызывает постепенное завершение работы.

ОБНОВЛЕНИЕ: нашел эту документацию по теме, которая по существу подтверждает подозрение и указывает наexit как последний вариант:

http://developer.apple.com/iphone/library/qa/qa2008/qa1561.html

Ответы [ 3 ]

8 голосов
/ 26 августа 2010
exit(0);

Да, это работает и на iPhone.

В качестве альтернативы

[[UIApplication sharedApplication] terminate];
0 голосов
/ 26 августа 2010

Это не имеет никакого смысла для меня - ни один ресурс не должен быть вне досягаемости для внутреннего сброса.Принудительное закрытие приложения - отстой для пользователя.

0 голосов
/ 26 августа 2010

При отладке сборки отладки я предпочитаю что-то, что вылетает в отладчике, поэтому я не только узнаю причину, но и могу при необходимости поискать подробности.Отправка случайного сообщения любому объекту, отличному от nil, является одним из способов сделать это в Objective C.

[ UIApplication foo: bar ];

Для отправки в магазин приложений -terminate определенно отклонит ваше приложение для использования (официально) недокументированного API.И, как сообщалось, exit (0) также делает это, хотя это документированный вызов ОС.

До OS 4.0 вы всегда могли отправить URL-адрес Safari, что заставило бы ОС корректно завершить работу вашего приложения.Не уверен, что делать в OS 4.0 и после того, как это законно в App Store.

...