objective -c constants.h static const

时间:2014-01-30 10:13:56

标签: objective-c

我搜索了很多类似的问题,但他们都没有对我需要的东西有一个非常好的答案。 我想知道在一些.h文件中编写常量的最佳方法。 我的常量文件只是一个没有导入的清晰文件,只是清除.h文件。我在前缀文件中导入它。 当我使用

static  NSInteger someInteger = 1;

static BOOl someBool = YES;

编译器编译好了但是给了我一个警告,即即使我在不​​同的类中多次使用它,这个变量也没有被使用。 但如果我使用

static NSString* someString = @"";

没有任何警告。

如果我使用

const NSInteger someInteger = 1;

编译器可以为真实设备编译,但在模拟器上运行时,它不会编译错误duplicate symbols for architecture i386

还有什么区别

const NSString* someString = @"";
const NSInteger someInteger = 1;

NSString* const someString = @"";
NSInteger const someInteger = 1;

我最终使用static const NSInteger someInteger =1;,但我不知道这是否是正确的选择。 所以我的问题是:我应该用什么词来成功创建一个constants.h文件?

1 个答案:

答案 0 :(得分:1)

对于所有类型(原始的或其他类型),您需要在某处提供它的单个实现:

constants.h:

extern const int someValue;
extern NSString * const someString;

constants.m:

const NSInteger someValue = 1;
NSString * const someString = @"Some string";

你永远不想在头文件中使用static变量,因为在每个包含该头的实现文件中最终会有“常量”的多个副本(它们可能不会扰乱链接器,并导致链接错误,但他们在那里。)