Objective-c:可变范围

时间:2014-05-29 05:10:58

标签: objective-c c variables static scope

很长一段时间以来,我一直在使用下面的1和3,最近使用4来定义我的变量。

但是我注意到还有其他有效的定义,我是Objective-C 2的新手,并且通过将方法及其内部变量放在一起可以使代码看起来更好。

有人可以在评论中验证断言吗?

static id var1; // 1. Shared among all classes and their instances defined in this file

id var2; // 2. Same as 1?

@implementation MyClass
{
    id var3; // 3. Different variable for each instance
}

- (void)method
{
    static id var4; // 4.1. Not accessible from other methods
                    // 4.2. Different for each instance?
}

id var5; // 5. Same as 3? Same as 1/2?

static id var6; // 6.1. Same as 1?
                // 6.2. Not visible to other classes in this file?

@end

this之类的一些问题有点类似,但Objective-C可能会有一些差异。

1 个答案:

答案 0 :(得分:3)

静态id var1;
=>仅在当前翻译单元中可见

id var2;
=>全局可见(又名外部)

id var3;
=>实例变量。创建实例时创建([Class alloc]

静态id var4;
=>功能本地。在流程开始时创建。与var1相同的生命周期,但仅在函数内部可见。

id var5;
=>与var2相同

静态id var6;
=>与var1相同

Objective-C是一个忠实的C变种(恕我直言:)。

编辑了关于var4的不清楚的提及。