一般都会想到 for循环, 毕竟Objective-C是基于C语言的,自然可以使用for循环。
我们都知道字典和set是无序的,所以我们无法根据特定的整数下标来直接访问其中的值,于是需要先获取字典中的键或者set中的所有对象,这样就可以在获取到的有序数组上进行遍历了。然而创建数组是要额外的开销的,还会多创建出一个数组对象,他会保留collection中的所有对象,占用了内存。
所以,推荐用下面这张方式:
基于块的遍历方式
苹果封装了如此高效、优雅、易用的一套接口不用多么浪费。
就是这么简单,block直接把字典的key和value都给我们了,再也不用书写直白而繁琐的代码了。
相对于正向遍历多了一个枚举类型的参数NSEnumerationReverse,打开这个选项就可以反向遍历了。
并发遍历,参数是:NSEnumerationConcurrent,也就是可以同时遍历collection中的几个元素,具体数量根据系统资源而定。这样会充分利用系统资源,高效快捷的完成collection的遍历,系统底层会通过GCD来处理并发事宜,开发者不需要担心内存和线程,其他方式若要实现高效的并发遍历十分有难度。通过块枚举遍历,改变collection并不会引起崩溃。