J'ai un NSArray
et dois l'itérer dans un cas particulier à l'envers, de sorte que je regarde d'abord le dernier élément. C'est pour des raisons de performances: si le dernier n'a aucun sens, tous les précédents peuvent être ignorés. Je voudrais donc briser la boucle. Mais cela ne fonctionnera pas si j'itère en avant de 0 à n. Je dois passer de n à 0. Il existe peut-être une méthode ou une fonction que je ne connais pas, alors je n'aurais pas à réinventer la roue ici.
Pour ajouter d'autres réponses, vous pouvez utiliser -[NSArray reverseObjectEnumerator]
en combinaison avec la fonctionnalité d'énumération rapide d'Objective-C 2.0 (disponible dans Leopard, iPhone):
for (id someObject in [myArray reverseObjectEnumerator])
{
// print some info
NSLog([someObject description]);
}
Source avec quelques informations supplémentaires: http://cocoawithlove.com/2008/05/fast-enumeration-clarifications.html
Comme il s’agit de performances, vous avez un certain nombre d’options et vous feriez bien de les essayer toutes pour voir laquelle fonctionne le mieux.
[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:…]
-[NSArray reverseObjectEnumerator]
Méthodes plus extrêmes (si la performance est super critique)
Il y en a peut-être d'autres. Dans ce cas, n'importe qui est libre de l'ajouter.
De ici :
NSEnumerator* myIterator = [myArray reverseObjectEnumerator];
id anObject;
while( anObject = [myIterator nextObject])
{
/* do something useful with anObject */
}
[NsArray reverseObjectEnumerator]
for (int i = ((int)[array count] - 1); i > -1; i--) {
NSLog(@"element: %@",array[i]);
}