#import使接口定义加倍并导致错误

时间:2013-09-20 18:33:57

标签: objective-c

我有两个课程:RequisitionGetdetailsRequisitionRelease。 .m文件中的#import USAdditions.h

现在在类文件中:ReqDetailViewController.m#import RequisitionGetdetails.h和R equisitionRelease.h当我编译时,我得到了USAdditions.h中定义的所有对象的重复接口定义

我只使用#import。我的代码中没有#include。我认为#import应该像这样处理重复的定义。 如果我注释掉#import RequisitionRelease.h,那么重复的错误会消失,这会告诉我编译器从USAdittions.h两次通过其他两个类引入定义,但不会忽略重复。

我理解#import是如何工作的我错了吗?任何想法如何解决这一问题? 我看过一些类似的帖子,但没有一个解决方案适用于我或帮助过我。

2 个答案:

答案 0 :(得分:2)

您是某些导入.h文件而不是.m文件?

如果你#import .m文件,编译器几乎会复制粘贴整个文件,导致重新定义方法和类。

我过去曾经这样咬过我。

答案 1 :(得分:0)

除了Benoit的回答,你的.h文件中还有@implementation个吗?如果是这样,那么您将在两个翻译单元中定义(而不仅仅是声明)该类。类定义最终存在于两个.o文件中,并且在链接时,您将获得重复的定义。

您的头文件应该只有声明,而不是定义。