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

Mic*_*ael 2 xcode objective-c

我有一个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
Run Code Online (Sandbox Code Playgroud)

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

...

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

#endif
Run Code Online (Sandbox Code Playgroud)

错误:

duplicate symbol _kHero in:
...list of .o files
duplicate symbol kCount in:
...list of .o files
2 duplicate symbols for architecture arm64
Run Code Online (Sandbox Code Playgroud)

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

小智 14

除了重复文件之外,此错误还有其他两种可能性

  1. 您可能错误地导入.m文件而不是.h文件
  2. 常量kHero和kCount已在其他一些文件中定义.当您在常量文件中定义这些常量时,只需在Prefix.pch文件中导入该文件,然后从其他地方删除.