很长一段时间以来,我一直使用下面的 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 可能有一些差异。
最佳答案
静态标识符 var1;
=> 仅在当前翻译单元可见
id 变量2;
=> 全局可见(又名外部)
id 变量 3;
=> 实例变量。创建实例时创建 ([Class alloc]
)
静态标识符 var4;
=> 功能局部。在进程启动时创建。与 var1 相同的生命周期,但仅在函数内部可见。
id 变量5;
=> 与 var2 相同
静态标识符 var6;
=> 与 var1 相同
Objective-C 是忠实的 C 变体(恕我直言:)。
编辑了关于 var4 的不明确提及。
关于Objective-c:变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23926093/