Nach meinem Verständnis sollte man eine Forward-Class-Deklaration für den Fall verwenden, dass ClassA einen ClassB-Header einschließen muss und ClassB einen ClassA-Header einschließen muss, um zirkuläre Einschlüsse zu vermeiden. Ich verstehe auch, dass eine #import
ist eine einfache ifndef
so dass ein Include nur einmal vorkommt.
Meine Frage lautet wie folgt: Wann verwendet man #import
und wann verwendet man @class
? Manchmal, wenn ich eine @class
Deklaration sehe ich eine allgemeine Compiler-Warnung wie die folgende:
warning: receiver 'FooController' is a forward class and corresponding @interface may not exist.
Ich würde das wirklich gerne verstehen, im Gegensatz zum einfachen Entfernen der @class
Vorwärts-Erklärung und das Auslösen einer #import
ein, um die Warnungen des Compilers zum Schweigen zu bringen.