如果在for in 循环里面,对数组进行修改,无论是增删改 都会扔出一个异常。
如果时for循环的话就没有问题
for in实际上是快速枚举,enumerateObjectsWithOptions
//使用方法。
[arr enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"idx=%ld, id=%@", idx, obj); //当需要结束循环的时候,调用stop,赋予YES
if (idx ==3) {
*stop = YES;
}
}];
同理 遍历字典的用法
[dic enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
NSLog(@"value for key %@ is %@ ", key, value);
if ([@"key2" isEqualToString:key]) {
*stop = YES;
}
}];