再帰的にimportをつかう

再帰インポートのお話。

■サンプルコード

便宜上ちょっと無茶なコードです。。。

#import <Foundation/Foundation.h>
#import "Child.h"
@interface Parent : NSObject {

}
@end

以下のようにして継承する。

#import <Foundation/Foundation.h>
#import "Parent.h"
@interface Child : Parent {

}
@end

ビルドしようとすると以下のエラーが表示される。

Cannot find interface declaration for ‘Parent’, superclass of ‘Child’

■解決策

#import <Foundation/Foundation.h>
@interface Parent : NSObject {

}
@end
#import "Child.h"
#import <Foundation/Foundation.h>
#import "Parent.h"
@interface Child : Parent {

}
@end

その場しのぎの策に走ってました。ちゃんとやるんだったら以下のように設計を改める。

#import <Foundation/Foundation.h>
@interface Parent : NSObject {

}
@end
#import <Foundation/Foundation.h>
#import "Parent.h"
@interface Child1 : Parent {

}
@end
#import <Foundation/Foundation.h>
#import "Parent.h"
@interface Child2 : Parent {

}
@end

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です