错误信息:reason: '*** Collection <__NSArrayM: 0xb550c30> was mutated while
being enumerated.'
在数组遍历的过程中出现这个问题,该是因为在遍历的过程中修改了数组中的元素例如删除导致。
例如:
NSMutablerray *array = [NSMutablerray array];
for (NSString *name in array) {
if ([name isEquableTo(@"QiuQian")]){
[array removeObject: name];
}
}
解决方法:
NSMutablerray *array = [NSMutablerray array];
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isEqualToString:@"QiuQian"]) {
*stop = YES;
if (*stop == YES) {
[array removeObject: obj];
}
}
*stop = NO; //移除了数组中的元素之后继续执行
if (*stop) {
NSLog(@"array is %@", array);
}
}];
网友评论