【问题标题】:Constants in Objective-C and "duplicate symbol" linker errorObjective-C 中的常量和“重复符号”链接器错误
【发布时间】:2013-06-13 06:30:45
【问题描述】:

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

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

但在尝试构建项目时出现“重复符号”错误。我发现了几篇关于外部或全局常量的帖子处理这个问题,但我想要的只是将一些常量声明为他们的类私有,我该怎么做?

谢谢

【问题讨论】:

  • 我不相信您可以为该类声明一个私有常量,但正如@MichK 回答的那样,您可以为您的 const 提供 static 关键字以使其对该源文件保持私有(实现如果只有那个类在源文件中,你的目标)。

标签: ios objective-c linker duplicates constants


【解决方案1】:

如果您只想在一个.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;

【讨论】:

  • static NSString * const CONSTANT_STRING = @"For the win!"@MichK
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多