[iOS ]iOS 开发遍历数组防止crash及提高效率

前言

开发过程中不免需要对数组进行遍历,一般我们都直接用for循环或者for in遍历数组,但是这样的话就容易crash,原因是遍历数组的时候可能一不留神就对数组进行更改。

这边推荐使用block进行遍历数组。例:

 NSMutableArray *tempArray = [[NSMutableArray alloc]initWithObjects:@"12",@"23",@"34",@"45",@"56", nil];
    [tempArray enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSLog(@"obj=%@--idx=%lu",obj,(unsigned long)idx);
        if ([obj isEqualToString:@"34"]) {
            *stop=YES;
            [tempArray replaceObjectAtIndex:idx withObject:@"100"];
        }
        if (*stop) {
            NSLog(@"tempArray is %@",tempArray);
        }
    }];

利用block来操作,发现block遍历比for便利快20%左右,这个的原理是这样的:找到符合的条件之后,暂停遍历,然后修改数组的内容。既提高了效率,又防止不小心crash。
附上代码运行控制台输出:


image.png

可以看到只循环了三次就停止了,这样效率就提升了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。