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

Имам приложение, което извиква уеб услуга. Работи добре в емулатора, но се срива на устройството. Когато отстранявам грешки, сривът се случва при достъп до уеб услугата за първи път. Следната е информацията, която получавам:

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]) Излязъл: Убит: 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 egid: 0

Всяка помощ ще бъде много оценена, нямам представа какво се случва.


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


Отговори (2)


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

Най-общо казано, всички задачи, обвързани с IO, като уеб услуги, трябва да бъдат прехвърлени към фонова нишка:

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

Същите тези ограничения могат или не могат да бъдат наложени в симулатора.

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

Не изпълнявайте блокиращи задачи в основната нишка, използвайте async или нова нишка. Проблемът е, че анкетирате уеб услуга, преди да бъде изобразен първият изглед. Това кара приложението ви да започне да изтича и iOS ще убие процеса ви.

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

person j_mcnally    schedule 07.03.2012