为什么XCode会抛出重复的符号错误?

我有一个XCode 6项目有两个目标 – 一个iOS 8应用程序和一个iOS 8扩展。 我在两个目标之间共享一个常量文件。

我犯了一个错误,声明一个const int,而在头部没有一个外部或静态前缀,这导致了重复符号链接器错误。

这个错误的声明已经存在于过去的几个版本的修改中,并且自第一天起,常量头就被包含在MULTIPLE文件中。

那么为什么我最近才开始得到这个错误 – 在我通过移除Main.storyboard来更改项目文件之后 – 也只是在模拟器上编译?

注意: 这发生在之前

有关何时发生错误的更多背景信息:

我从项目文件中删除了一个未使用的Main.storyboard,并立即发生这个链接错误。 我知道这个错误现在不应该发生,因为相关的常量已经使用了很长时间了。

我修正了错误(通过声明const为extern),但现在开始得到一些其他的错误。

我现在确信代码没有任何问题,只不过是XCode的问题。 因此,为了testing我一次又一次删除了Main.storyboard,奇怪的错误(对不起,我没有logging)又回来了,代码没有改变。

为了进一步确认,我在同一台机器上检查了一个完整的提交(完美的工作,仍然有Main.storyboard)。 这一次,没有任何改变的代码,项目或Main.storyboard,我看到了同样的错误。

这证实了我的实际pbxproj和源文件没有任何问题,但是数据XCode中的一些问题已经caching(某处)。

请注意,清除DerivedData文件夹也没有帮助。

迂回的点, XCode肯定是为了突然抛出错误或者没有抛弃这一切而犯错。 但是我正在检查XCode为什么突然间似乎“改变”它的行为,是否还有另外一个合理的解释。

只要检查你没有#importinput错误的.m文件,而不是.h 。 这在过去为我造成了重复的符号错误。