0

在我的应用程序中,我有许多可变数组,我用 int i 填充了一个 for 循环;我 = 0; 我++;该应用程序工作正常,但现在它开始崩溃,出现以下错误:

* Terminating app due to uncaught exception 'NSRangeException', reason: '* -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]' * First throw call stack: (0x32bb888f 0x34b5d259 0x32b019db 0xb1f07 0x372a160d 0x32b8ca33 0x32b8c699 0x32b8b26f 0x32b0e4a5 0x32b0e36d 0x32c5b439 0x350edcd5 0xa8e45 0xa8de0)终止称为抛出异常(lldb)

问题是我不知道是哪个数组导致了问题,而且我有超过 12 个数组。所以我不知道如何解决它。我尝试使用 Zombie objects 功能,但它并没有告诉我哪个数组引起了麻烦。

我也无法理解,因为在代码中我首先这样做:

[messagename removeAllObjects];
[messageframe removeAllObjects];
[messagetext removeAllObjects];
[MapViewArray removeAllObjects];
[DeleteButtonArray removeAllObjects];
[DeleteButtonArray removeAllObjects];
[DeleteButtonArray removeAllObjects];


MapViewArray = [[NSMutableArray alloc]init];
messagename = [[NSMutableArray alloc]init];
messageframe = [[NSMutableArray alloc]init];
messagetext = [[NSMutableArray alloc]init];
DeleteButtonArray = [[NSMutableArray alloc]init];
imageArray = [[NSMutableArray alloc]init];
messageframe = [[NSMutableArray alloc]init];

然后我只以这种方式添加对象:

 [messagename addObject: textname];

我什至不访问某个索引!

4

2 回答 2

0

@Robin van Dijke 说得好,您可以转到 XCode 中的断点导航器面板并设置一个异常断点,该断点将在异常即将上升时中断您的程序。

在删除元素之前还要检查数组是否为零。IE。

如果(消息名!= 无){

[消息名称 removeAllObjects];

} 别的 {

messagename = [[NSMutableArray alloc]init];

}

于 2012-08-21T12:12:10.603 回答
0

您正在尝试从不存在的数组中获取索引。“超出范围 [0,0]”。可能在您将项目插入数组的循环中,而不是在您发布的代码中。

于 2012-08-21T12:03:38.820 回答