Fragen Sie sich nur, ob es in Objective-C eine Entsprechung zu Java's ArrayList gibt?Objective C entspricht Java's ArrayList
Oder etwas, das verwendet werden kann, um Objekte/Daten zu speichern, die keine festgelegte Größe haben.
Danke.
Fragen Sie sich nur, ob es in Objective-C eine Entsprechung zu Java's ArrayList gibt?Objective C entspricht Java's ArrayList
Oder etwas, das verwendet werden kann, um Objekte/Daten zu speichern, die keine festgelegte Größe haben.
Danke.
Wie andere darauf hingewiesen haben, sind NSArray/NSMutableArray was Sie suchen.
Wenn Sie aus der Java-Welt kommen, werden Sie feststellen, dass Cocoa's Kollektionsangebote ziemlich dürftig sind. Tatsächlich ist die Funktionalität ziemlich umfangreich. Die NSArray
, NSDictionary
und sind tatsächlich class clusters, was bedeutet, dass die öffentliche API eine "abstrakte" Klasse ist. Wenn Sie eine der Sammlungen initialisieren, erhalten Sie in Wirklichkeit eine konkrete Implementierung, die auf die von Ihnen bereitgestellten Daten zugeschnitten ist. Diese Implementierungen können auch die konkrete Implementierung zur Laufzeit ändern, wenn sich die Daten ändern (z. B. nimmt ihre Größe zu). Dies ist alles möglich aufgrund der viel dynamischeren Laufzeit von Objective-C als es die statische Typisierung (und Sicherheit) von Java erlaubt. Die Klassenclusterstrategie verbirgt somit viele der Implementierungen von z.B. die java.util.List
Schnittstelle, hinter einer einzigen API.
Die Cocoa-Frameworks sind in Verbunddatenstrukturen etwas eingeschränkt (d. H. Solche, die auf "primitiven" Arrays, Mengen und Wörterbüchern basieren). Sie können feststellen, dass die ausgezeichnete, Open Source CHDataStructures viele Lücken füllt.
Ich suche nach dem gleichen Ding wie Julio und sehe viele Antworten, die sagen "Schließe einfach deine Augen und benutze NS \ * Array ...". Aber oft möchten Sie explizit eine verknüpfte Liste verwenden, z. zum konstanten Einfügen/Löschen von Elementen (NS \ * Array garantiert dies nicht). Die Auswahl der richtigen Datenstruktur basierend auf Ihrem bekannten Zugriffsmuster ist grundlegend für die Performance. Als Neuling in der iOS-Entwicklung verstehe ich nicht, warum Cocoa diese Entscheidung vom Programmierer zu nehmen scheint? –