2010-07-12 11 views
6

Was ist der Unterschied bei der Verwendung von @class oder #import in objective-c?@klasse vs #import

Ich habe verschiedene Tutorials gesehen und nur wenige benutzen @class, während die meisten anderen #import benutzen.

+0

mögliches Duplikat von [Objective-C @class vs. #import] (http://stackoverflow.com/questions/322597/objective-c-class-vs-import) – kubi

Antwort

14

@class importiert nicht die Datei, es sagt nur zum Compiler "Diese Klasse existiert, obwohl Sie nicht darüber wissen, warnen Sie mich nicht, wenn ich es benutze". #import importiert die Datei tatsächlich, sodass Sie alle Methoden und Instanzvariablen verwenden können. @class wird verwendet, um Zeit beim Kompilieren zu sparen (das Importieren der gesamten Datei lässt die Kompilierung länger dauern). Sie können #import verwenden, wenn Sie möchten, dauert es nur länger für Ihr Projekt zu bauen.

+2

Manchmal, besonders im Fall von Zirkelverweisen , Sie können #import absolut nicht verwenden. @class ist eine Vorwärtsdeklaration einer Klasse, und da sie die Klasse nicht definiert, kann sie Zirkelreferenzen brechen. –

+0

Ich dachte, dass #import gegen diese geschützt ist, indem ich jede Datei nur einmal hinzufüge. –