类'Foo'的重复接口声明

时间:2010-10-12 05:36:29

标签: iphone objective-c cocoa-touch xcode objective-c++

我正在处理我的程序,似乎设置中的某些内容发生了变化。突然我得到错误“类'Foo'的重复接口声明”。它提到了一个重复的头文件,但只有一个副本。

有趣的是,这只发生在调试模式,而不是设备模式。

有没有人知道可能出现什么问题?

我正在使用Objective-C ++和一些静态库。

13 个答案:

答案 0 :(得分:17)

我有完全相同的问题。我有两个标题副本,并通过删除xcode中对它的引用删除了旧标题。然后只有一个标题的引用指向项目导航器中的新头文件。

实际从文件系统中删除旧标题后,问题就消失了。

这可能是xcode中的一个错误。有时,当您删除对文件的引用时,部分引用仍保留在项目文件中。

答案 1 :(得分:14)

我有此错误消息,我没有重复的标头或重复的导入。问题是我已经重命名了头文件,Xcode以某种方式保持缓存,这就产生了构建错误。

我做了以下修复此操作。希望它可以帮助那些已经尝试过其他答案但仍然有错误的人。

  1. 清洁项目
  2. 删除“派生数据”(管理器>项目标签,选择项目并单击删除)
  3. 重启Xcode
  4. 构建

答案 2 :(得分:9)

我发现了问题。头文件有两个副本,XCode感到困惑。

现在神秘的是XCode决定自己复制这些文件......

答案 3 :(得分:5)

我遇到了类似的问题,但我没有源文件的两个副本。在我的情况下,我有以下情况:

A类给出了上述错误,而 B类则使用了A类的类型。

问题是在B类中我在.h和.m文件中都调用了#import“Class A”。这导致了我的上述问题。希望这有助于任何人。

答案 4 :(得分:2)

我在所有文件头中从“#include”更改为“#import”,它解决了问题。我想当你“#include”一个文件时,你需要编写自己的防范多个包含,而当你使用“#import”时,XCode会为你处理它。

答案 5 :(得分:2)

发生此错误是因为为不同的对象提供相同的变量名称。这是Xcode7.0之后出现的错误。因此,要解决此问题,只需转到构建设置并搜索无通用块并将其设置为

再次构建,您将不会再次出现此错误。

<强> CheersKP

答案 6 :(得分:1)

在使用各种自创的静态库归档工作区时,我也遇到了这个问题。该项目可以很好地构建并在模拟器上运行但是当我尝试“存档”AdHoc测试的构建时,我会收到这些重复的接口定义错误。决议是让我确保'复制标题'阶段正确指出公共/项目/私人标题。我有一个错误地设置为'project'的头文件。它需要是“公开的”,之后,存档已成功创建。

答案 7 :(得分:1)

对我来说,这个问题是我在Cocoapods上迁移到use_frameworks!时引起的。我在FBSDKCoreKit中导入了一个标头,用于扩展方法。这很好,直到我切换到使用框架,当使用本地包含(#import "FBSDKAccessToken.h")不再正常;我不得不切换到全局包含(#import <FBSDKCoreKit/FBSDKAccessToken.h>)。 This article描述了为什么你的桥接文件中不包含标题,这使我指向了正确的方向。

答案 8 :(得分:1)

我的问题是以下。我在我的项目中添加了pop动画框架,但是使用了xcodeproj而不是xcworkspace。 配置完成后,我能够构建pop-iso-framework目标,但是我无法构建我的app目标。后来我意识到Xcode已经为 Build Phases - &gt;添加了pop类。编译我的应用目标的来源。从那里删除所有流行类修复了问题。

答案 9 :(得分:0)

有同样的问题,似乎我的project.pbxproj文件中有一个太多的class.m文件。

在编辑之前始终备份该文件以防万一!

答案 10 :(得分:0)

当使用两个版本的A.h A.m文件时,我遇到了这个问题。所以我创建了两个文件夹(物理目录)并将每个A.h和A.m保存在单独的文件夹中。然后将文件夹添加到所需目标。为我解决了这个问题。

偏离背景但可能有所帮助。 !!

答案 11 :(得分:0)

就我而言,问题来自于从另一个项目中引入文件以供重用。我不小心在复制对话框中“如果需要复制文件”,而不是在新项目中创建新副本,它引用原始项目中的文件。删除引用并正确地重新复制文件后,一切正常。

答案 12 :(得分:0)

我在构建框架时遇到了同样的问题。 &#34;先前的定义在这里&#34;错误指向与原始&#34;类重复的接口定义完全相同的头文件和行号#34;错误。以上都没有,并且代码中没有错误。我做了一个Spotlight搜索隐含的标题,并出现了两个副本:我期望的那个,另一个在build / Debug-iphonesimulator / include中。我做了一个干净,然后手动删除了构建目录。问题消失了。