Приложение аварийно завершает работу на устройстве, но не в симуляторе

У меня есть приложение, которое обращается к веб-службе. В эмуляторе работает нормально, а на устройстве вылетает. Когда я отлаживаю, сбой происходит при первом доступе к веб-службе. Ниже приводится информация, которую я получаю:

7 марта 15:58:52 Justins-iPhone SpringBoard[15]: Мое приложение не удалось запустить вовремя

7 марта 15:58:52 Justins-iPhone SpringBoard[15] : Принудительный отчет о сбое MyApp[112]...

7 марта 15:58:52 Justins-iPhone SpringBoard[15] : Завершено создание отчетов о сбоях.

7 марта 15:58:52 Justins-iPhone com.apple.launchd[1] (UIKitApplication:My App[0xc356][112]): (UIKitApplication:My App[0xc356]) Exited: Killed: 9

7 марта 15:58:52 Justins-iPhone SpringBoard [15]: приложение «Мое приложение» аварийно завершило работу с сигналом 9: убито: 9

7 марта 15:58:52 Justins-iPhone ReportCrash[113]: отчет о сбое сохранен в /var/mobile/Library/Logs/CrashReporter/MyApp_2012-03-07-155852_Justins-iPhone.plist с использованием uid: 0 gid: 0, synthetic_euid: 501 егид: 0

Любая помощь будет принята с благодарностью, я понятия не имею, что происходит.


person Fencer04    schedule 07.03.2012    source источник


Ответы (2)


Если вы сделаете вызов этой службы в FinishedLaunching в AppDelegate, и это займет более ~ 17 секунд, устройство уничтожит ваше приложение.

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

_client = new ServiceClient();
_client.DoSomethingCompleted += Handle_DoSomethingCompleted;
_client.DoSomethingAsync();

Те же самые ограничения могут применяться или не применяться в симуляторе.

person Anuj    schedule 07.03.2012
comment
Похоже, что в последних версиях симулятора iOS это больше не применяется (почти уверен, что это было в более ранних выпусках 4.x, но не могу вспомнить, когда это изменилось). - person poupou; 08.03.2012

Не выполняйте блокирующие задачи в основном потоке, используйте асинхронный или новый поток. Проблема в том, что вы опрашиваете веб-службу до того, как будет отображено первое представление. Это приводит к тому, что время запуска вашего приложения истекает, и ios убьет ваш процесс.

Mar 7 15:58:52 Justins-iPhone SpringBoard[15] : My App failed to launch in time

person j_mcnally    schedule 07.03.2012