for循环

最近遇到一道题怎么优化for循环,平时习惯性用for...in,但一直没有比较过,今天自己总结一下。

当枚举一个NSArray的时候:

使用 for (id object in array) 如果是顺序枚举

使用 for (id object in [array reverseObjectEnumerator]) 如果是倒序枚举

使用 for (NSInteger i = 0; i < count; i++) 如果你需要知道它的索引值,或者需要改变数组

尝试 [array enumerateObjectsWithOptions:usingBlock:] 如果你的代码受益于并行执行

当枚举一个NSSet的时候:

使用  for (id object in set) 大多数时候

使用 for (id object in [set copy]) 如果你需要修改集合(但是会很慢)

尝试 [array enumerateObjectsWithOptions:usingBlock:] 如果你的代码受益于并行执行

当枚举一个NSDictionary的时候:

使用  for (id object in set) 大多数时候

使用 for (id object in [set copy]) 如果你需要修改词典

尝试 [array enumerateObjectsWithOptions:usingBlock:] 如果你的代码受益于并行执行

这些方法可能不是最快的,但他们都是非常清晰易读的。所以请记住,有时是在不写干净的代码,和快速的代码之间做出选择,你会发现,你可以在两个世界得到最好的。

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

推荐阅读更多精彩内容