我有一个配置 .h
文件,我可以通过将其导入其他类来访问它。
在那个 .h
类中,我有:
static NSString *const charIdList[] =
{
@"1", @"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"AA",@"BB",@"CC",@"DD",@"EE",@"FF",@"GG",@"HH",@"II",@"J",@"K"
};
我在程序运行期间在其他类中使用的。
我应该在这里使用静态变量吗?或者只使用一个字符串会安全吗?
在这种情况下 NSString
的范围是什么 - 如果它不是 static
?
最佳答案
您需要注意在头文件中定义 static
变量的影响:发生这种情况时,包含您的头的每个翻译单元1 将获得其自己的 charIdList
数组副本,无论您是否使用它。
更好的方法是将此数组建立为单例,或者如果它确实是常量,则将其定义为全局的,并在 header 中为其添加 extern
2:
.h 文件:
extern NSString *const charIdList[];
extern size_t charIdListLength;
.m 文件:
NSString *const charIdList[] = {
@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"AA",@"BB",@"CC",@"DD",@"EE",@"FF",@"GG",@"HH",@"II",@"J",@"K"
};
size_t charIdListLength = sizeof(charIdList)/sizeof(charIdList[0]);
1 “翻译单元”是
.c
或 .m
文件的奇特名称。
2 注意数组的长度需要单独定义;否则,分割 sizeof
的技巧将不起作用。
关于objective-c - 在 .h 文件中使用静态 NSString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18900141/