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:] 如果你的代码受益于并行执行

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

你可能感兴趣的:(for循环)