Possible Duplicate:
How can I have references between two classes in Objective-C?
Objective-C #import loop
我的代码中出现了一些错误,我不确定,但我认为这是因为我是 #import
在我所在的另一个接口(interface)中调用一个接口(interface) #import
荷兰国际集团的另一个接口(interface)。如果我让你感到困惑,我会给你一个例子。
#import "OneClass.h"
@interface SecondClass : NSObject
{
OneClass * obj;
}
#import "SecondClass.h"
@interface OneClass : NSObject
{
SecondClass * obj;
}
最佳答案
是的,您有循环导入。这里的问题是第二个导入(重新导入第一个 header 的导入)基本上被编译器忽略,因为它认为它已经导入了该 header 。
这里的解决方案是使用@class
前向声明而不是使用#import
。这个解决方案不仅解决了循环导入问题,而且无论如何它都是一个更好的主意,因为它打破了不必要的依赖链(例如,如果我编辑 OneClass.h,SecondClass.h 将不需要重新处理)。
要在此处应用此功能,只需删除 SecondClass.h 中的 #import OneClass.h
并将其替换为 @class OneClass;
在更一般的情况下,您不需要只是为了声明使用该 header 中的类的 ivar/property/method 而#import
头文件。 @class
标记就足够了。但是,如果您从类继承,或者引用该 header 中声明的另一个非类类型,则需要#import
头文件。另请记住,如果您在 header 中使用 @class
,则需要记住将实际的 #import
放入您的 .m 文件中。
关于objective-c - #导入中的#导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8334447/