iOS开发——循环遍历的比较

  常用的有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循环机器不能自己察觉,但是枚举器可以察觉。

原文地址:https://www.cnblogs.com/yyt-hehe-yyt/p/7886025.html