我正在处理我的程序,似乎设置中的某些内容发生了改变。突然出现了错误信息“重复接口声明类'Foo'”。它提到了一个头文件被重复,但只有一份副本。
有趣的是,这只在调试模式下出现,而非设备模式下。
有人知道可能出了什么问题吗?
我正在使用Objective-C++和一些静态库。
我正在处理我的程序,似乎设置中的某些内容发生了改变。突然出现了错误信息“重复接口声明类'Foo'”。它提到了一个头文件被重复,但只有一份副本。
有趣的是,这只在调试模式下出现,而非设备模式下。
有人知道可能出了什么问题吗?
我正在使用Objective-C++和一些静态库。
我曾遇到完全相同的问题。 我有两份头文件副本,通过在 Xcode 中删除对其中一个副本的引用来删除旧的副本。 然后只有一个指向项目导航器中新头文件的头文件引用。
实际上从文件系统中删除旧的头文件后,问题就解决了。
这可能是Xcode中的bug。 也许有时候当你删除一个文件的引用时,一部分引用仍然存在于项目文件中。
我遇到了这个错误消息,但我没有重复的头文件或重复的导入。问题在于我已经重命名了头文件,但是Xcode仍然将它们缓存,从而导致构建错误。
我采取以下措施来修复此问题。希望能帮助那些已经尝试了其他答案但仍然出现错误的人:
我找到了问题所在。头文件有两个副本,导致Xcode感到困惑。
现在的谜题是,Xcode如何决定自己复制这些文件的...
我曾经遇到过类似的问题,但我没有两个源文件的副本。在我的情况下,我遇到了以下情况:
A类出现了上述错误,并且B类使用了A类的类型属性。
问题在于,在B类中,我在.h和.m文件中都调用了#import "A类"。这在我的情况下引起了上述问题。希望对大家有所帮助。
我在所有文件头中将“#include”更改为“#import”,这解决了问题。 我认为当您“#include”一个文件时,您需要编写自己的多重包含保护,而当您使用“#import”时,Xcode会为您处理。
use_frameworks!
时引起的。我正在导入一个头文件从FBSDKCoreKit到一个方便类中,我用它来扩展方法。这很好,直到我切换到使用框架为止,在使用本地包含(#import "FBSDKAccessToken.h"
)不再可行;我必须切换到全局包含(#import <FBSDKCoreKit/FBSDKAccessToken.h>
)。这篇文章描述了为什么你不再在你的桥接文件中包含头文件,指引我找对了方向。我也曾遇到过这个问题,当我尝试将一个包含多个自己创建的静态库的工作区进行归档时,项目可以正常构建并在模拟器上运行,但是当我尝试为AdHoc测试构建“Archive”时,就会收到这些重复接口定义错误。解决方法是确保“复制头文件”阶段正确指示了公共/项目/私有头文件。我有一个头文件被错误地设置为“项目”,它需要设置为“公共”,之后,归档成功创建。