2012-12-26 48 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 - )。好的,我完成了这个。谢谢。 –