Приложение не отказывает, когда запущено от отладчика, но отказывает, когда запущено пользователем.
Q: Почему делает мой сбой приложения во время запуска, если я не выполняю его от XCode?
A: Почему делает мой сбой приложения во время запуска, если я не выполняю его от XCode?
когда приложения запускаются, iPhone OS использует сторожевой таймер. Если приложение берет слишком долго для завершения его начального запуска, операционная система завершает приложение. Приложения, завершенные поэтому, будут иметь код исключения 0x8badf00d и соответствующая информация отмечена в связанном отчете катастрофического отказа:
Катастрофический отказ перечисления 1 сообщает о выборке.
Exception Type: 00000020 Exception Codes: 0x8badf00d Highlighted Thread: 0 Application Specific Information: com.yourcompany.yourapp failed to launch in time elapsed total CPU time (seconds): 11.120 (user 1.840, system 9.280), 59% CPU elapsed application CPU time (seconds): 2.160, 12% CPU |
Когда XCode запускает приложение, сторожевой таймер отключен для компенсации дополнительные издержки, которые могут быть понесены, когда XCode присоединяет отладчик. Если Вы исключительно тестируете путем выполнения от XCode, в результате долгий запуск Вашего приложения может первоначально выйти из Вашего внимания.
Лучшие приложения запускаются быстро, позволяя пользователю взаимодействовать с приложением как можно скорее. Для обеспечения качественного пользовательского опыта необходимо обычно оценивать и работать для улучшения времени запуска приложения. Если значительная работа должна быть выполнена в запуске, рассмотреть выполнение, которые работают над вторичным потоком и визуально указанием действия.
История версии документа
| Дата | Примечания |
|---|---|
| 22.05.2009 | Новый документ, описывающий, как XCode отключает стандартный сторожевой таймер iPhone OS для запуска приложения. |