27 Stimmen

Objective-C: Importieren von Kopfzeilen in .h oder .m?

Ich bin neu in Objective-C und würde gerne wissen, wie man am besten einige externe Header importiert, die ich in meiner Klasse verwende.

Sollte ich den #import "classB.h" in meiner eigenen Klassen .h-Datei oder in der .m-Datei speichern?

Was ist der Unterschied?

Danke!

38voto

Es ist üblich, eine Vorwärtsklassendeklaration ( @class classB; ) in der Kopfzeile und #import "classB.h in der Datei .m

Eine Vorwärtsklassendeklaration, wie @class classB; lässt den Compiler wissen, dass er die Klasse später erwarten sollte, und er sollte sich im Moment nicht darüber beschweren.

12voto

Marc Charbonneau Punkte 40221

Um zirkuläre Referenzen zu vermeiden, importieren Sie eine Header-Datei nur dann in die Header-Datei einer anderen Klasse, wenn sie von dieser Klasse erbt. Andernfalls verwenden Sie @class ClassName um den Klassentyp zu deklarieren, wenn Sie ihn in Ihrer Header-Datei benötigen, und #importieren Sie ihn in der Implementierungsdatei.

4voto

Marc W Punkte 18889

Für den Compiler spielt das eigentlich keine Rolle. Sie könnten einfach Forward-Deklarationen in Ihre .h einfügen und dann warten, bis #import bis zu Ihrer .m-Datei. Siehe diese Beitrag auf SO für weitere Informationen zu diesem Thema.

Aus der Perspektive eines sauberen Codes könnte man argumentieren, dass die Details durch die Aufnahme der Importe in die Implementierungsdatei näher an dem Ort sind, an dem sie benötigt werden (siehe auch den Link oben; die Leute dort verweisen auf diese Idee).

2voto

Es wird empfohlen, dass Sie andere Header-Dateien in Ihre Header-Datei importieren. Auf diese Weise können Sie die Klasse sowohl in der Header- als auch in der Implementierungsdatei verwenden (da die Implementierungsdatei (.m) ihre zugehörige Header-Datei importiert).

Wenn Sie wissen möchten, wann Sie Dateien importieren und wann Sie eine Forward-Class-Deklaration verwenden sollten, können Sie unter aquí . ;-)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X