最近遇到一道題怎么優(yōu)化for循環(huán),平時習慣性用for...in,但一直沒有比較過宋下,今天自己總結一下。
當枚舉一個NSArray的時候:
使用 for (id object in array) 如果是順序枚舉
使用 for (id object in?[array reverseObjectEnumerator]) 如果是倒序枚舉
使用 for (NSInteger i = 0; i < count; i++) 如果你需要知道它的索引值,或者需要改變數組
嘗試?[array enumerateObjectsWithOptions:usingBlock:] 如果你的代碼受益于并行執(zhí)行
當枚舉一個NSSet的時候:
使用??for (id object in set) 大多數時候
使用?for (id object in [set copy]) 如果你需要修改集合(但是會很慢)
嘗試?[array enumerateObjectsWithOptions:usingBlock:] 如果你的代碼受益于并行執(zhí)行
當枚舉一個NSDictionary的時候:
使用??for (id object in set) 大多數時候
使用?for (id object in [set copy]) 如果你需要修改詞典
嘗試?[array enumerateObjectsWithOptions:usingBlock:] 如果你的代碼受益于并行執(zhí)行
這些方法可能不是最快的十偶,但他們都是非常清晰易讀的。所以請記住园细,有時是在不寫干凈的代碼扯键,和快速的代碼之間做出選擇,你會發(fā)現珊肃,你可以在兩個世界得到最好的荣刑。