有一个简单的方法来反向遍历一个NSArray?

我有一个NSArray并且必须在特殊情况下向后遍历它,以便我首先查看最后一个元素。 这是出于性能的原因:如果最后一个没有意义,所有以前的可以忽略。 所以我想打破这个循环。 但是,如果我从0到n迭代,这是行不通的。 我需要从n到0。也许有一个方法或函数我不知道,所以我不必在这里重新发明轮子。

要添加其他答案,可以使用-[NSArray reverseObjectEnumerator]与Objective-C 2.0(Leopard,iPhone中可用)中的快速枚举function结合使用:

 for (id someObject in [myArray reverseObjectEnumerator]) { // print some info NSLog([someObject description]); } 

与更多的信息来源: http : //cocoawithlove.com/2008/05/fast-enumeration-clarifications.html

既然这是为了表演,你有很多的select,并build议全部尝试,看看哪个效果最好。

  • [array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:…]
  • -[NSArray reverseObjectEnumerator]
  • 创build一个数组的反向副本,然后通过正常的迭代
  • 使用标准C for循环,并通过数组向后启动和工作。

更极端的方法(如果性能是超关键的)

  • 阅读Cocoa如何实现快速对象枚举并创build自己的等价物。
  • 使用C或C ++数组。

可能有其他的。 在这种情况下,任何人都可以随意添加它。

从这里 :

  NSEnumerator* myIterator = [myArray reverseObjectEnumerator]; id anObject; while( anObject = [myIterator nextObject]) { /* do something useful with anObject */ } 
 [NsArray reverseObjectEnumerator]