Быстрое перечисление на NSArray строковых литералов - PullRequest
1 голос
/ 09 марта 2012

Использование ARC ...

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

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

Возвращает ошибку индекса за пределами границ.

*** - [__ NSArrayM objectAtIndex:]: индекс 0 вне границ для пустого массива

Какую ошибку я совершил?

1 Ответ

1 голос
/ 09 марта 2012

Код, который вы показали, в порядке.Я просто запустил его под ARC, и он успешно завершен.Вы уверены, что ошибка относится к этому коду, а не к другой части вашего кода?

На ум приходит пара мыслей: переменная 'массив' довольно общая.Это мешает другим локальным переменным / переменным экземпляра?Не должно иметь значения, находится ли код рядом друг с другом, но если вы объявили его в одном месте и выполняете цикл for в другом, вы можете не выполнять тот же «массив», как вы думаете.Изолируйте этот код в другом классе / методе / чем угодно и посмотрите, как он работает.

Еще одна мысль: быстрое перечисление не будет перечислять массивы нулевой длины (сначала проверяется).Вот почему я думаю, что вы принимаете ошибку за неправильную строку кода.

...