objective-c ヘッダファイルの循環参照を回避する

プロジェクトで自分のクラスの数が多くなってきたとき、関連するクラスなどを読み込むのにいちいちヘッダファイルを指定するのが面倒くさくなってきます。

そこで、必要なinclude情報などを一括して書いたヘッダファイルを別に用意してそれを読み込むということができます。

 

例えば、importer.hというファイルを作り、

 
#if !(AR_IMPORTER_LOADED == 1)
#import 

#import "ArrayUtil.h"
#import "AnalMain.h"
#import "Analyzer.h"
#import "DetectedObj.h"

typedef struct{
	int x;
	int y;
}STPoint;

#endif

#define AR_IMPORTER_LOADED 1;

こうしておいて、このimporter.hを各クラスの「.m」ファイルで読み込みます。次のようになります。たとえば、Anayzer.mの上の方で、

 
#import "importer.h"

このようにします。デフォルトでは、#import "Analyzer.h"のようになっていますが、Analyzer.hはimporter.h の中で読み込んでいるので不要になります。

しかし、ただ読み込むと同じヘッダファイルを何回も読み込み、循環参照という現象がおき、正しくクラスがコンパイルできなくなってしまいます。上の例では、プリプロセッサ・ディテクティブを使い、一度読み込んだヘッダファイルは二度と読み込まないようにしています。

コメントする
トラックバック(0)

トラックバックURL: http://blog.tokyoace4.com/cgi-bin/mt/mt-tb.cgi/169