• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

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
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Das ist aber durch die Brust ins Auge.

Mach es doch einfach klassisch, ohne Fast Enumeration

Alex
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Ja, so hab ich das mittlerweile auch gelöst, danke!
 

Amin Negm-Awad

Süsser Pfaffenapfel
Registriert
01.03.07
Beiträge
665
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

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Was macht das besser als die klassische Methode? Hat das ein besseres Laufzeitverhalten?

Alex