这是什么类的Objective-C变量?

时间:2009-06-09 14:06:07

标签: objective-c

我正在通过一些我没有写过的Objective-C代码,并找到了一个我不熟悉的变量声明样式。谁能告诉我下面的类实现中变量'myVar'的范围?请注意,这出现在'.m'文件中,而不是接口声明。

@implementation MyClass
@synthesize ivar1, ivar2;

NSString* myVar; // <- What is the intent?

- (id)init {

...

@end

对我来说,意图似乎与成员变量的意图类似。以这种方式声明变量而不是在@interface声明中使用ivar有什么好处?

3 个答案:

答案 0 :(得分:9)

这只是一个普通的旧全局变量。它只有一个实例,它可以被同一文件转换单元中的任何代码访问(运行预处理器后得到的最终文件)。其他翻译单元(即其他.m文件)也可以访问该全局变量,但为了这样做,他们需要使用extern语句:

extern NSString *myVar;

extern说“这是全局变量的名称,但它是在不同的翻译单元中定义的”。链接器在链接时解析所有extern声明。

答案 1 :(得分:2)

一个命名不佳的全球变量...

答案 2 :(得分:1)

我对ObjC没有太多经验,但我认为这是一个全球性的。