我有一个带有几个头文件和实现文件的objective-c / xcode项目。我想声明一个我可以读取的变量,并从与项目相关的任何文件中进行更改。我尝试在标头中执行extern int val = 0;
,但这会导致链接器错误。
感谢任何帮助,谢谢。
答案 0 :(得分:1)
要存储和访问{app}和iOS应用中的int
,我建议您使用NSUserDefaults
。
您可以通过
从应用程序的任何位置设置值NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:anInt forKey:@"IntKey"];
[defaults synchronize];
然后,您可以通过
从应用程序中的任何位置检索值NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
int a = [defaults integerForKey:@"IntKey"];
这也适用于BOOL
,float
,NSString
和NSArray
。查看NSUserDefaults
documentation了解更多详情和示例。
答案 1 :(得分:0)
把:
extern int val;
在要使用此全局变量的任何.m或.c文件中包含的至少一个头文件中。在这里包括一项任务几乎总是一个错误。
把
int val = 0;
在任何函数或方法范围之外,只包含在构建中包含的.m或.c文件中。没有了。
如果经常访问此变量,并关心性能和电池寿命,使用NSDefaults比访问全局变量要慢几个数量级。对单例模型对象使用app委托也有点慢,并且会产生稍大的应用程序。