很长一段时间以来,我一直在使用下面的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可能会有一些差异。
答案 0 :(得分:3)
静态id var1;
=>仅在当前翻译单元中可见
id var2;
=>全局可见(又名外部)
id var3;
=>实例变量。创建实例时创建([Class alloc]
)
静态id var4;
=>功能本地。在流程开始时创建。与var1相同的生命周期,但仅在函数内部可见。
id var5;
=>与var2相同
静态id var6;
=>与var1相同
Objective-C是一个忠实的C变种(恕我直言:)。
编辑了关于var4的不清楚的提及。