- 867 名前:デフォルトの名無しさん [2009/03/07(土) 18:35:46 ]
- ClassA.hで
#import <Cocoa/Cocoa.h> #import "ClassB.h" @interface ClassA : NSObject { ClassB* b; } @end ClassB.hで #import <Cocoa/Cocoa.h> #import "ClassA.h" @interface ClassB : NSObject { ClassA* a; } @end というように、互いにインスタンスを持ち合うとコンパイル時にエラーが出ますが、 ClassA.h内で #import "ClassB.h" @class ClassB; ClassB.h内で #import "ClassA.h" @class ClassA; というふうに@classディレクティブを付けることでエラーが出なくなります。 @class classnameが、classnameがクラスであることを宣言しているのはわかるのですが、 なぜこれをやると、ClassA.h、ClassB.hを互いにimportしているにもかかわらずエラーが出なくなるのでしょうか。 逆に、付けないとなぜエラーになるのでしょうか。 また、@classを付ける基準ですが、 ・そのクラスのスーパークラス ・Cocoa等のフレームワーク内のクラス を除く全てのクラスを使用する時、必ず@classをつけるという考え方で良いのでしょうか。 どなたか詳しくご存知のかたよろしくお願いします。
|

|