У меня есть структура данных, которую я хотел перечислить.Я попытался реализовать NSFastEnumerator моего объекта следующим образом:
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state
objects:(__unsafe_unretained id [])buffer
count:(NSUInteger)len {
NSUInteger c = 0;
while (c < len) {
id obj = [self objectAtIndex:state->state];
if (obj == nil) break;
buffer[c] = obj;
c++;
state->state++;
}
state->itemsPtr = buffer;
state->mutationsPtr = nil;
return c;
}
Если я использую objectAtIndex напрямую, мой объект работает правильно.Я получаю ноль, когда индекс не существует.Но когда я затем использую цикл for:
for (Pin *pin in coll) { ... }
, код проходит через вышеупомянутую функцию в порядке и заполняет состояние, как представляется, действительными значениями и возвращает количество объектов, тогда я получаю ошибку EXC_BAD_ACCESSв самом операторе for.
Что я делаю не так в этой реализации?