有一个简单的方法来反向遍历一个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]