我有一个配置.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
?
答案 0 :(得分:4)
您需要了解在头文件中定义static
变量的效果:当发生这种情况时,包含您的标头的每个翻译单元 1 将获得自己的副本charIdList
数组,无论您是否使用它。
更好的方法是将此数组建立为单例,或者如果它确实是常量,将其定义为全局,并在标头 2 中为其添加extern
:
.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
s的诀窍是行不通的。