2012-12-26 74 views
0

我得問一個問題。解析(枚舉)NSMutableArray的最佳(最快)方法。

假設你有一個數組NSMutableArray myArray;並且它有nome對象。

我可以說:

for (NSObject* anObject in myArray){ 
    //bla-bla 
} 

我也可以說:

for (int i = 0; i < myArray.count-1; i ++){ 
    //bla-bla 
} 
  1. 有什麼辦法2之間的區別?

  2. 哪種方式更快?

任何意見(或鏈接,或嘖)表示讚賞。

乾杯

+2

這取決於您在// bla-bla行中所做的事情 - 如果您執行消息發送以從數組中獲取對象,則快速枚舉的情況會更快。請參閱:http://www.cocoawithlove.com/2008/05/fast-enumeration-clarifications.html – bryanmac

回答

3

兩個版本應該不會太不同,尤其是沒有明顯的(與第二代碼除外不遍歷所有項目)。如果速度是您想要的一切,則可以使用enumerateObjectsWithOptions:usingBlock:並通過NSEnumerationConcurrent選項同時枚舉陣列。然而,除此之外,使用這兩個版本中的任何一個都不會有什麼區別,所以你應該更多地使用你喜歡的任何東西。第一個版本是肯定少型密集,也適用於其他基礎容器類型(NSSetNSCountedSetNSDictionary

+0

我發現在枚舉這種方式時我無法做[myArray removeObject ....]。我需要反向枚舉,使用for(int i = myArray.count-1; i> = 0; i - )。好的,我完成了這個。謝謝。 –