1

使用弧...

NSArray *array = [NSArray arrayWithObjects:@"dog", @"cat", @"mouse", nil];

for(NSString *animal in array) {
    NSLog(@"animal = %@", animal);
}

产生索引越界错误。

*** -[__NSArrayM objectAtIndex:]:空数组的索引 0 超出范围

我犯了什么愚蠢的错误?

4

1 回答 1

1

您显示的代码很好。我刚刚在 ARC 下运行它并成功完成。您确定错误是针对该代码而不是代码的另一部分吗?

我想到了几个想法:变量“数组”非常通用。它是否会干扰其他本地/实例变量?代码是否彼此相邻并不重要,但是如果您已在一个地方声明它并在另一个地方执行 for 循环,那么您可能不会像您想的那样执行相同的“数组”。将此代码隔离在另一个类/方法/任何东西中,看看它是如何运行的。

另一个想法:快速枚举不会枚举零长度数组(它首先检查)。这就是为什么我认为您将错误误认为是错误的代码行。

于 2012-03-09T17:11:29.830 回答