0
// in ClassA.h
static NSString *globalStr = @"HelloWorld";
@interface ClassA
...
@end
// in ClassB.h
#include "ClassA.h"
// in ClassB.m
...
NSLog(@"The global string: %@", globalStr);
...
在C++中,“static”应该表示变量或函数具有内部链接。
但是在这种情况下它被用来共享变量,没有static关键字就会发生错误。Obj-C中的静态全局变量?
我很困惑,有人能告诉我背后的概念吗?
谢谢!
它有助于记住,头被*逐字复制*到它们包含的文件中。您不会与导入标题的其他文件“共享”变量 - 标题导致所有这些文件都包含声明“static NSString * globalStr = @”HelloWorld“' 。 – Chuck 2010-06-16 17:33:55
我想我应该补充说,你会有相同的错误在C++ .... – 2010-06-16 17:51:55
谢谢,但我真的不知道为什么有一个“重复的符号”。你能再解释一下吗,再次感谢。 – 2010-06-19 09:06:16