iPhone Entwicklung: Welche Art von Datenstrukturen sind verfügbar?

8

Dies ist eine sehr neue Frage, aber stellt die iPhone-API irgendwelche Datenstrukturen zur Verfügung, mit denen man arbeiten kann (d. h. verknüpfte Liste, Hash-Karte, etc.)?

    
Jake 20.04.2009, 01:09
quelle

3 Antworten

18

Sie können die beliebige Datenstruktur verwenden, die in C oder C ++ mit dem iPhone SDK implementiert wurde.

Zum Beispiel verwende ich die Standardbibliothek sehr oft.

Daneben können Sie auch die komplexen Datenstrukturen von Cocoa verwenden, die wie folgt verfügbar sind:

  1. NSArray
  2. NSDictionary (Hash)
  3. NSSet (set)

Sie können hier ein Begleitdokument haben.

    
Pablo Santa Cruz 20.04.2009, 01:56
quelle
12

Cocoa (ein Framework, das sowohl für Mac als auch für iOS verfügbar ist) implementiert mehrere gängige Sammlungsarten , einschließlich NSArray , NSDictionary und NSSet , sowie ihre veränderbaren Varianten. (Leopard führte auch NSPointerArray , NSHashMap und NSHashTable ein, ein Array / Wörterbuch / Satz mit zusätzlichen Optionen (wie z. B. schwache Referenzen), die sie in einer Garbage-Collection-Umgebung recht praktisch machen sind derzeit auf dem iPhone nicht verfügbar und würden im Moment wenig Sinn machen, da iOS die Garbage Collection nicht unterstützt.) Diese Klassen sind extrem schnell und eignen sich für den allgemeinen Gebrauch in jeder Cocoa-Anwendung.

Neben diesen bereitgestellten Strukturen haben Sie mehrere Möglichkeiten: (1) Erstellen Sie komplexere Strukturen, indem Sie diese als Bausteine ​​verwenden, (2) vorhandenen Code von Drittanbietern nutzen oder (3) Ihre eigenen Datenstrukturen von Grund auf neu erstellen.

Eine Option ist CHDataStructures.framework , ein Open-Source-Objective-C-Framework, das ich pflege. Es implementiert mehrere andere allgemeine Datenstrukturen, z. B. Stack / Queue / Deque, verknüpfte Listen, sortierte Sets und mehr. Diese Strukturen übernehmen NSCoding und NSCopying (plus NSFastEnumeration auf 10.5+), so dass sie nahtlos mit dem nativen Objective-C-Code arbeiten. Das Projekt ermöglicht es Ihnen, eine statische Bibliothek für die Verwendung auf dem iPhone zu erstellen. Da dieses Framework Open Source ist, können Sie bei Bedarf sogar nur den relevanten Code direkt in Ihr Projekt einfügen.

Während Sie C ++ - und STL-Strukturen verwenden können, habe ich festgestellt, dass das Mischen von Objective-C und C ++ eher verwirrend ist und zu lästigen Fehlern führt, insbesondere für Anfänger. Dies ist keine Bash gegen C ++, nur ein "When in Rome" -Prinzip. Bei Verwendung von C ++ ist STL natürlich der bevorzugte Ansatz. Wenn Sie bereits in C ++ mixen, sind Sie wahrscheinlich damit vertraut, dass STL eine gute Wahl ist. Trotzdem finde ich, dass die Verwendung nativer Cocoa-Sammlungen mehr selbstverständlichen, lesbaren Code erzeugt.

    
Quinn Taylor 15.06.2009 19:46
quelle
-4

Die Objective-C-Sprache stellt keine inhärenten Datenstrukturen wie Verkettete Listen usw. bereit. Da sie jedoch auf der C / C ++ - Codebasis basiert, kann alles, was in C oder C ++ implementiert werden kann, direkt in Objective durchgeführt werden -C, einschließlich verknüpfter Listen und anderer Datenstrukturen.

    
Jason 20.04.2009 02:19
quelle