1

ARC を使用して...

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

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

範囲外のインデックス エラーが発生します。

*** -[__NSArrayM objectAtIndex:]: インデックス 0 が空の配列の範囲を超えています

私が犯した骨頭の間違いは何ですか?

4

1 に答える 1

1

あなたが示したコードは問題ありません。ARCで実行したところ、正常に完了しました。エラーはそのコードに対するものであり、コードの別の部分ではありませんか?

いくつかの考えが頭に浮かびます: 変数 'array' はかなり一般的です。他のローカル/インスタンス変数に干渉していませんか? コードが隣同士にあるかどうかは問題ではありませんが、ある場所で宣言し、別の場所で for ループを実行している場合、思ったのと同じ「配列」を実行していない可能性があります。このコードを別のクラス/メソッド/その他に分離し、それがどのように実行されるかを確認してください。

別の考え: 高速列挙は、長さゼロの配列を列挙しません (最初にチェックします)。これが、エラーを間違ったコード行と間違えていると思う理由です。

于 2012-03-09T17:11:29.830 に答える