Помогите интерпретировать отчет о сбое Apple

Я не могу воспроизвести ошибку, которую я получаю в отчетах о сбоях Apple. У меня есть 4 приложения, использующие одну и ту же кодовую базу, которые уже одобрены, и теперь у меня есть 2 отклоненных с теми же ошибками, с которыми я никогда не сталкивался.

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

Incident Identifier: XXXXXX
CrashReporter Key:   XXXXXX
Hardware Model:      iPhone3,1
Process:         XXXX [120]
Path:            XXXX
Identifier:      XXXX
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  launchd [1]

Date/Time:       XXXX
OS Version:      iPhone OS 4.1 (8B117)
Report Version:  XXXX

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread:  0

Thread 0 Crashed:
0   libSystem.B.dylib               0x00078ac8 __kill + 8
1   libSystem.B.dylib               0x00078ab8 kill + 4
2   libSystem.B.dylib               0x00078aaa raise + 10
3   libSystem.B.dylib               0x0008d03a abort + 50
4   libstdc++.6.dylib               0x00044a20 __gnu_cxx::__verbose_terminate_handler() + 376
5   libobjc.A.dylib                 0x00005958 _objc_terminate + 104
6   libstdc++.6.dylib               0x00042df2 __cxxabiv1::__terminate(void (*)()) + 46
7   libstdc++.6.dylib               0x00042e46 std::terminate() + 10
8   libstdc++.6.dylib               0x00042f16 __cxa_throw + 78
9   libobjc.A.dylib                 0x00004838 objc_exception_throw + 64
10  CoreFoundation                  0x000a167c -[NSObject(NSObject) doesNotRecognizeSelector:] + 96
11  CoreFoundation                  0x000491d2 ___forwarding___ + 502
12  CoreFoundation                  0x00048f88 _CF_forwarding_prep_0 + 40
13  XXX                         0x00002a02 -[XXX application:didFinishLaunchingWithOptions:] (XXXAppDelegate.m:94)
14  UIKit                           0x0000e47a -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 766
15  UIKit                           0x000049e0 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 200
16  UIKit                           0x0005dfd6 -[UIApplication handleEvent:withNewEvent:] + 1390
17  UIKit                           0x0005d8fa -[UIApplication sendEvent:] + 38
18  UIKit                           0x0005d330 _UIApplicationHandleEvent + 5104
19  GraphicsServices                0x00005044 PurpleEventCallback + 660
20  CoreFoundation                  0x00034cdc __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 20
21  CoreFoundation                  0x00034ca0 __CFRunLoopDoSource1 + 160
22  CoreFoundation                  0x00027566 __CFRunLoopRun + 514
23  CoreFoundation                  0x00027270 CFRunLoopRunSpecific + 224
24  CoreFoundation                  0x00027178 CFRunLoopRunInMode + 52
25  UIKit                           0x000040fc -[UIApplication _run] + 364
26  UIKit                           0x00002128 UIApplicationMain + 664
27  XXX                         0x00002154 main (main.m:14)
28  XXX                         0x00002124 start + 32

Код в AppDelegate:

NSArray *viewControllers = favNavController.viewControllers;
FavouritesViewController *favouritesView = (FavouritesViewController*)[viewControllers objectAtIndex:0]; <-- Line indicated in crash report

Я не могу воспроизвести это. Любое понимание или совет приветствуются.


person androider    schedule 01.11.2010    source источник


Ответы (1)


Мне кажется, что «favNavController.viewControllers» не является NSArray, поэтому вы получаете «Нераспознанный селектор» при попытке выполнить «objectAtIndex».

Вы заметили, что приложение запускается в ответ на URL-адрес? (Открыть с URL-адресом)?

Я не знаю, приведет ли это ваш код к другому пути инициализации, который в настоящее время еще не завершен.

person Brad    schedule 01.11.2010
comment
Привет и спасибо за ответ. OpenWithUrl - это не то, с чем я знаком, и сейчас буду рассматривать, честно говоря, это не часть моего дизайна, чтобы мое приложение запускалось в ответ на URL-адрес. Насколько я понимаю, это похоже на запуск приложения Google Maps с параметрами широты/долготы или набор номера телефона по телефону 555-709-7654? - person androider; 01.11.2010
comment
Хорошо, я пытался собрать некоторую информацию о системных вызовах, ссылающихся на URL-адрес в отчете о сбое, но я мало что узнаю. Являются ли вызовы callInitializationDelegatesForURL и _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden: другим способом запуска приложения или что-то в этом роде? Извините, но я борюсь с этим... :( - person androider; 01.11.2010
comment
Я намеренно вызвал нераспознанное исключение селектора в указанной строке, favNavController.viewControllers. И точно воспроизвел ошибку. О момент, почему я не подумал сделать это раньше. Итак, теперь я должен понять, почему массив viewControllers вызывает проблемы. Все это настроено с помощью файлов пера, поэтому я подумал, что об этом позаботятся. - person androider; 01.11.2010
comment
Хммммм. Мое приложение основано на Tabbar, и каждая вкладка имеет собственный контроллер навигации. В IB контроллер основного вида для каждого из контроллеров навигации имеет тип, связанный с ним в инспекторе. Для меня тип был показан в столбце «Тип» главного окна сводки пера. Но при открытии атрибутов контроллера не было указано перо. Это означает, что когда вы видите интерфейс шаблона, он не показывает View, загруженный из viewControllerName. Я думаю, именно поэтому FavNavController.viewControllers приводил к тому, что селектор не распознавался. - person androider; 01.11.2010
comment
Я отмечу ваш ответ как правильный Бред только для того, чтобы заметить, что запущен в ответ на URL? (Открыть с URL-адресом)? бит кажется просто какой-то внутренней вещью, а не URL-адресом в моем понимании. Я попытаюсь отправить повторно и надеюсь, что это пройдет, поскольку я не могу найти ничего другого. Странно, что это никогда не появлялось на моих тестовых устройствах или симуляторе :( - person androider; 01.11.2010
comment
Не уверен, что я решил это в конце концов. Я отправляю ответ здесь, когда у меня есть отказ/принятие от Apple. - person androider; 01.11.2010