为什么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为什么突然间似乎“改变”它的行为,是否还有另外一个合理的解释。
只要检查你没有#import
input错误的.m
文件,而不是.h
。 这在过去为我造成了重复的符号错误。