Objective-C中的常量和“重复符号”链接器错误

时间:2013-06-17 10:21:20

标签: ios objective-c linker duplicates const

我已经在.m文件的某些不同的类中声明了一个具有相同名称的常量,这样:

@implementation MyViewController
const NSInteger numberOfItems = 6;
...
@end

但是我得到了一个重复的符号"尝试构建项目时出错。我发现了几个关于外部或全局常量这个问题的帖子,但我想要的只是声明他们班级中的一些常量,我该怎么做?

谢谢

1 个答案:

答案 0 :(得分:30)

如果只想在一个.m文件中使用常量,则将其声明为static。 例如:static NSString * const CONSTANT_STRING = @"Constant I am"

如果是NSInteger,您可以在每个.m文件中写一下:

static const NSInteger my_const = 3;

如果你想要全局变量(一个常量,每个文件中都有一个值可见),那么写下你的.h

extern const NSInteger my_global_const;

并在您的.m文件中添加

const NSInteger my_global_const = 5;