Erstellen von verknüpften Listen in Objective C

8
%Vor%

Dies ist der Code, den ich in meiner .h-Datei habe, um zwei Strukturen zu erstellen, die Daten enthalten (eine für einen Ereignisnamen / Ort / Ort und eine für die Knoten einer verknüpften Liste. Ich kann die Ereignisstruktur in der node struct, aber ich brauche die node struct in sich selbst. In C ++ würde das funktionieren, aber wie kann ich das in objective-c erreichen? Danke!

    
Inanepenguin 23.11.2010, 23:48
quelle

3 Antworten

21

Warum sollten Sie sich mit einer Struktur beschäftigen? Verwenden Sie einfach eine Klasse:

%Vor%

Es gibt keinen signifikanten Overhead im Vergleich zu einer Struktur (wenn die Methodenaufrufe wirklich messbar sind, könnten Sie sogar direkt Ivars freilegen). Besser noch, in dem Moment, in dem Sie die Struktur archivieren, Geschäftslogik hinzufügen oder irgendetwas anderes interessant machen möchten, können Sie einfach Methoden hinzufügen.

    
bbum 24.11.2010, 00:14
quelle
2

Sie müssen Ihre Struktur wie in C. benennen. Zum Beispiel:

%Vor%

Eine bessere Frage ist jedoch, warum Sie diese verknüpfte Liste überhaupt erst erstellen möchten. Warum nicht einen der vom Framework bereitgestellten Containertypen verwenden?

    
Carl Norum 23.11.2010 23:50
quelle
-1

Ich denke, Sie werden feststellen, dass es in C ++ nicht funktioniert (aber sie haben möglicherweise die Grammatikregeln so geändert, dass es funktioniert). Sie meinen wahrscheinlich etwas mehr so:

%Vor%

Das funktioniert in C ++, weil Node äquivalent zu struct Node ist, wenn nicht schon etwas namens Node existiert (dies verursacht manchmal verwirrende Fehler, wenn Foo sowohl eine Klasse als auch die Instanzmethode einer anderen Klasse ist was in einigen Codierungsstilen passiert).

Das Problem ist struct Node . Ich bevorzuge das; es scheint reiner zu sein. Es gibt einige gute Gründe, ein typedef zu verwenden (z. B. Dinge wie TUInt64 , die aufgrund fehlender Compiler-Unterstützung in der Vergangenheit möglicherweise eine Struktur waren). Wenn Sie ein Typedef verwenden, gibt es keinen Grund, der Struktur einen anderen Namen zu geben, da sie sich in verschiedenen Namespaces befinden (IIRC-Strukturen sind ein "Tag-Namespace").

Die übliche typedef-Version ist ungefähr so:

%Vor%

Alternativ ändern Sie die Dateierweiterung in .mm und dann funktioniert es, weil Sie Objective-C ++ kompilieren!

    
tc. 24.11.2010 01:05
quelle

Tags und Links