Почему иногда мое приложение перестает работать и выдает программе полученный сигнал: ошибка «SIGABRT»? - PullRequest
1 голос
/ 03 октября 2011

У меня есть четыре вида в моем навигационном приложении. MainView, AddView, ShowView и DetailView. MainView имеет NSMutableArray. Когда я нажимаю кнопку «Добавить», я иду в AddView и затем добавляю объект в массив NSMutable MainView. Затем я возвращаюсь и иду в ShowView, который является tableView. Из MainView я вызываю функцию createList из ShowView так:

 ShowView *show = [[ShowView alloc] init];
    [show createList: self.savedObjectsList];
    [self.navigationController pushViewController: show animated: YES];

    [runListController release]; 

В ShowView createList выглядит так:

 - (void) createRunsList: (NSMutableArray *) list{
     objList = [list retain];

 }

где objList - NSMutableArray в ShowView. каждая ячейка табличного представления создает DetailView объекта NSMutbaleArray. Иногда мои приложения перестают работать, и я получаю эту ошибку:

 2011-10-03 15:35:55.076 RunnoIPhoneApp[2750:707] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array'
 *** Call stack at first throw:
 (
0   CoreFoundation                      0x3399964f __exceptionPreprocess + 114
1   libobjc.A.dylib                     0x30b16c5d objc_exception_throw + 24
2   CoreFoundation                      0x33904069 -[__NSArrayM objectAtIndex:] + 184
3   RunnoIPhoneApp                      0x0000b79f -[PostRunDetailViewController createRunDetail:] + 90
4   RunnoIPhoneApp                      0x0000fd2f -[RunListViewController tableView:didSelectRowAtIndexPath:] + 182
5   UIKit                               0x3203f51b -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 662
6   UIKit                               0x320a30eb -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 130
7   Foundation                          0x32ba26d5 __NSFireDelayedPerform + 368
8   CoreFoundation                      0x33970a47 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14
9   CoreFoundation                      0x33972ecb __CFRunLoopDoTimer + 850
10  CoreFoundation                      0x33973845 __CFRunLoopRun + 1088
11  CoreFoundation                      0x33903ec3 CFRunLoopRunSpecific + 230
12  CoreFoundation                      0x33903dcb CFRunLoopRunInMode + 58
13  GraphicsServices                    0x3162e41f GSEventRunModal + 114
14  GraphicsServices                    0x3162e4cb GSEventRun + 62
15  UIKit                               0x32019d69 -[UIApplication _run] + 404
16  UIKit                               0x32017807 UIApplicationMain + 670
17  RunnoIPhoneApp                      0x00002553 main + 70
18  RunnoIPhoneApp                      0x00002508 start + 40
 )
 terminate called after throwing an instance of 'NSException'
 Program received signal:  “SIGABRT”.
 warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.5 (8L1)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found).
 Program received signal:  “SIGABRT”.
 (gdb) 

Кто-нибудь может сказать мне, почему это происходит? DetailView некоторых первых объектов работает нормально, но затем я получаю эту ошибку. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Глядя на трассировку стека, выдается исключение в вашем методе [PostRunDetailViewController createRunDetail:], который вызывается при выборе строки в UITableView вашего RunListViewController. Вы пытаетесь получить доступ к элементу в массиве, который находится за пределами.

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

0 голосов
/ 03 октября 2011

Просто прокомментируйте эту строку [выпуск runListController];

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