错误 - 架构arm64的2个重复符号?

时间:2014-09-20 04:33:50

标签: objective-c xcode

我有一个BConstants.h文件,我把所有常量都放到我的项目中。该文件如下:

#ifndef asdf_BConstants_h
#define asdf_BConstants_h

typedef NS_ENUM(NSUInteger, BTheme) {
    kField
};

typedef NS_ENUM(NSUInteger, BItem) {
    kBox
};

typedef NS_ENUM(NSUInteger, BMovementState) {
    kTouchUp,
    kTouchDown
};

#endif

当我将以下三行添加到此文件时,当文件被#import添加到另一个.m文件时,我会收到后续错误

...

NSString * const kHero = @"Hero";
NSString * const kCount = @"Count";

#endif

错误:

duplicate symbol _kHero in:
...list of .o files
duplicate symbol kCount in:
...list of .o files
2 duplicate symbols for architecture arm64

我已经查看过已发布的问题,说明我的compile sources应用程序target中可能有重复的文件,但我检查了一下,发现没有重复的文件。这个问题还可以来自哪个,是否在BConstants.h文件中包含了这2个NSString常量?

1 个答案:

答案 0 :(得分:14)

除了重复文件

之外,此错误还有其他两种可能性
  1. 您可能错误地导入.m文件而不是.h
  2. 常量kHero和kCount已在其他一些文件中定义。如 你是在常量文件中定义那些常量然后导入 该文件在Prefix.pch文件中,并从其他地方删除。