常用的有for in、for循环、EnumerateObjectsUsingBlock
1、小规模的数据无所谓,但是对大量数据,for in 的遍历速度非常之快,不是for循环能比的;
2、对于数组,推荐使用 enumerateObjectsUsingBlock的并行方法,[array enumerateObjectsUsingBlock:<#^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop)block#>],对象,索引,还能控制遍历的停止。(stop的使用:*stop = YES
);
3、对于字典, 推荐使用enumerateKeysAndObjectsUsingBlock,
[dic enumerateKeysAndObjectsUsingBlock:<#^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop)block#>],block版本的字典遍历可以同时取key和value,forin只能取key,再自己去取value,同样的可以控制遍历的停止。
4、forin实际上是快速枚举,跟for循环意义上还是有区别的。NSArray的枚举操作中有一条需要注意:对于可变数组进行枚举操作时,不能通过添加或删除对象等这类操作来改变数组容器,否则就会报错。而本身这种操作也是有问题的,说好了遍历,看可以,不要动手动脚的嘛!数组容器已经改变,可能遍历到没有分配的位置,用for循环机器不能自己察觉,但是枚举器可以察觉。