我对Objective-C中的全局变量有疑问。
我有两个.m文件:file1.m和file2.m,以及一个.h文件:file.h
我想在.h中声明一个全局变量,这个变量有两个由.m文件定义的不同值。
我这样做:
在.h文件中:
extern NSString * const myVar;
在file1.m中:
NSString * const myVar = @"value 1";
在file2.m中:
NSString * const myVar = @"value 2";
但它没有链接,我有错误“重复符号”。
我理解这个错误,但我不能解决它来做我想做的事。
任何帮助?
答案 0 :(得分:2)
不要在.h文件中声明它,而是在你使用它的每个.m文件中声明它(就像现在一样)并将“static”放在声明前面
static NSString * const myVar = @"value 2";
答案 1 :(得分:1)
如果你有一个全局变量,那么它是全局的......所以它到处都是一样的。变量不能包含两个不同的值。
如果你想在不同的文件中使用不同的值,那么不要将它们设为全局。
答案 2 :(得分:0)
放
NSString * const myVar = @"value 2";
只在一个.m。