enumerateObjectsWithOptions 和for 循环

如果在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;
        }
    }];

你可能感兴趣的:(enumerateObjectsWithOptions 和for 循环)