• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

reverse aus einem array

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Hallo, ich habe eine kleine, simple Frage:

Ich möchte in einer for-Schleife mittels NSFastEnumeration einen array behandeln, der aber von hinten nach vorne durchgegangen werden sollte. Ich glaube einen Weg gefunden zu haben, dieses Problem zu lösen, weil NSArray keine Funktion, ein Inverses seiner selbst herauszugeben, hat:

Code:
// array sei existent und vom Typ NSArray …

NSArray *reverseArray = [[array reverseObjectEnumerator] allObjects];

for (id value in reverseArray) {
[INDENT]…[/INDENT]
}

Ich kann aus der Dokumentation nur nicht herauslesen, ob dies wirklich funktioniert. Ich kanns auch nicht direkt testen, weil es nur eine effizientere Lösung wäre, die schlussendlich das selbe Resultat zur Folge hätte.

Weiss das jemand, oder hat jemand eine bessere Lösung auf Lager?

Danke vielmals, ppocket
 
Das ist aber durch die Brust ins Auge.

Mach es doch einfach klassisch, ohne Fast Enumeration

Alex
 
Ja, so hab ich das mittlerweile auch gelöst, danke!
 
Der Ansatz mit der Fast-Enumeration ist absolut richtig. Was du übersiehst, ist, dass man FE nicht nur auf Collections anwenden kann, sondern auf jede Instanz einer Klasse, die das FE-Protokoll implementiert. Und hierzu gehört auch der Enumerator. Richtig ist daher
Code:
NSEnumerator* enum = [yourArray reverseObjectEnumerator];
for( id item in enum ) {
   // …
}

Siehe hierzu auch: Negm-Awad, Objective-C und Cocoa I, 1./3. Auflage, S. 322 f.
 
  • Like
Reaktionen: Jamsven
Was macht das besser als die klassische Methode? Hat das ein besseres Laufzeitverhalten?

Alex