我搜索了很多类似的问题,但他们都没有对我需要的东西有一个非常好的答案。 我想知道在一些.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文件?
答案 0 :(得分:1)
对于所有类型(原始的或其他类型),您需要在某处提供它的单个实现:
constants.h:
extern const int someValue;
extern NSString * const someString;
constants.m:
const NSInteger someValue = 1;
NSString * const someString = @"Some string";
你永远不想在头文件中使用static
变量,因为在每个包含该头的实现文件中最终会有“常量”的多个副本(它们可能不会扰乱链接器,并导致链接错误,但他们在那里。)