Iphone 为什么有时我的应用程序停止工作并发出程序接收信号:“;SIGABRT&x201D;错误?

Iphone 为什么有时我的应用程序停止工作并发出程序接收信号:“;SIGABRT&x201D;错误?,iphone,objective-c,uinavigationcontroller,nsmutablearray,iphone-developer-program,Iphone,Objective C,Uinavigationcontroller,Nsmutablearray,Iphone Developer Program,在基于导航的应用程序中,我有四个视图。MainView、AddView、ShowView和DetailView。MainView有一个NSMutableArray。当我单击add按钮时,我转到AddView,然后在MainView的NSMutable数组中添加一个对象。然后我回到ShowView,这是一个tableView。我从MainView调用ShowView的createList函数,如下所示: ShowView *show = [[ShowView alloc] init];

在基于导航的应用程序中,我有四个视图。MainView、AddView、ShowView和DetailView。MainView有一个NSMutableArray。当我单击add按钮时,我转到AddView,然后在MainView的NSMutable数组中添加一个对象。然后我回到ShowView,这是一个tableView。我从MainView调用ShowView的createList函数,如下所示:

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

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

 }
在ShowView中,createList如下所示:

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

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

 }
其中objList是ShowView中的NSMutableArray。表视图的每个单元格都创建NSMUTBALEARRY对象的详细视图。问题是有时我的应用程序停止工作,并出现以下错误:

 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工作正常,但是我得到了这个错误。提前感谢。

查看堆栈跟踪,在[PostRunDetailViewController createRunDetail:]方法中引发异常,该方法在RunListViewController的UITableView中选择一行时调用。您试图访问数组中超出边界的元素


在这个方法的开头放一个断点,然后在调试器中逐步执行它。找出导致异常的阵列访问,然后思考阵列可能不包含预期元素的原因。

查看堆栈跟踪,异常会在[PostRunDetailViewController createRunDetail:]方法中引发,该方法在RunListViewController的UITableView中选择一行时调用。您试图访问数组中超出边界的元素

在这个方法的开头放一个断点,然后在调试器中逐步执行它。找出导致异常的数组访问,然后思考为什么数组可能不包含您期望的元素。

只需注释这一行即可 [运行列表控制器释放]

只需评论这一行即可
[运行列表控制器释放]

看起来您在数组上有一个越界错误-您尝试过调试它吗?它显示了正确数量的tableView行。例如,如果我添加了4个对象,它将在tableView中显示4行。有时,其中两个工作正常,两个不正常。有时其中3个可以正常工作,而1个不行。看起来数组上有越界错误-您尝试过调试它吗?它显示了正确数量的tableView行。例如,如果我添加了4个对象,它将在tableView中显示4行。有时,其中两个工作正常,两个不正常。有时其中3个工作正常,1个不正常。