Objective c 错误-架构arm64有2个重复符号?

Objective c 错误-架构arm64有2个重复符号?,objective-c,xcode,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) {

我有一个
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
当我将以下三行添加到此文件时,当文件被导入另一个
.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

我已经查看了已经发布的问题,以便说明我在应用程序
目标
编译源中可能有重复的文件,但是我检查了,没有发现重复的文件。这个问题还有什么原因,是不是在
BConstants.h
文件中包含了这两个NSString常量

除了重复的文件外,此错误还有两种可能

  • 您可能错误地导入了.m文件而不是.h文件
  • 常数kHero和kCount已在其他一些文件中定义。作为 您正在常量文件中定义这些常量,然后只需导入即可 将该文件保存在Prefix.pch文件中,并从其他任何位置删除

  • 是的,我认为需要先编译那些
    NSString
    s。我只是直接将
    .h
    导入任何
    .m
    文件。我是否将
    BPContants.h
    放在
    前缀中的
    导入
    #endif
    之间?此答案没有解决实际问题。