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.
Réponses
Trop de publicités? Pour ajouter les 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
Depuis que c'est pour performace, vous avez un certain nombre d'options et serait bien avisé de toutes les essayer pour voir ce qui fonctionne le mieux.
[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:…]
-[NSArray reverseObjectEnumerator]
- Renverser la copie du tableau et puis itérer sur que normalement
- L'utilisation d'un standard C pour la boucle de départ et un travail en arrière à travers la matrice.
De plus en plus extrêmes méthodes (si le rendement est super-critique)
- Lire sur la façon de Cacao met en œuvre rapide de l'objet de l'énumération et de créer votre propre équivalent dans le sens inverse.
- L'utilisation d'un C ou C++ tableau.
Il y a peut être d'autres. Dans ce cas, quelqu'un n'hésitez pas à ajouter.