如何在Objective-C中一次导入一个类的所有子类?

时间:2012-10-16 11:21:01

标签: iphone objective-c

  

可能重复:
  cannot find interface declaration for ‘AbstractPickerView’,superclass of ‘AttackLayer’

有3个头文件(超类和2个子类):

//  A.h
@interface A : NSObject
@end

//  A1.h
#import "A.h"
@interface A1 : A
@end

//  A2.h
#import "A.h"
@interface A2 : A
@end

我想导入类A的所有子类。
所以我在A.h中添加了2 #import,如下所示:

//  A.h
#import "A1.h" // added
#import "A2.h" // added

@interface A : NSObject
@end

但是在添加它们之后,发生了以下编译错误。

Cannot find interface declaration for 'A', superclas of 'A1'
Cannot find interface declaration for 'A', superclas of 'A2'

我知道可以通过创建和导入以下文件来解决此错误。

// ASubclasses.h
#import "A1.h"
#import "A2.h"

但我认为#import A.h#import ASubclasses.h导入子类更简单 如果我可以使用#import A.h导入子类,我不需要创建另一个文件(ASubclasses.h)。

有没有办法使用#import A.h导入A的所有子类? 或者一般来说,如何导入类的所有子类?

1 个答案:

答案 0 :(得分:2)

你得到的错误是因为#import循环。当两个头文件相互导入时会发生这种情况。您可以使用@class声明该类,然后在实现文件中导入头文件。