クラスのオブジェクト変数の定義が交差しているときに#includeを書くと、当然コンパイルが通らない。
【ClassA.h】
#include "ClassB.h"
@interface ClassA : NSObject
{
ClassB *b;
}
@end
【ClassB.h】
#include "ClassA.h"
@interface ClassB : NSObject
{
ClassA *a;
}
@end
こんなときには、#includeではなく @class ClassA; 等の表記を使う。というか、#include は実装ファイル側に持って行った方がいいとのこと。
通常、インタフェースファイルで @class を使ってクラスを宣言し、(それらのクラスのインスタンスを作成したり、メッセージを送信する必要があるため)対応する実装ファイルでそれらのインタフェースをインポートします。