在括号外定义的ivars和(全局?)变量之间的区别

时间:2015-04-29 10:20:55

标签: objective-c ivar

之间有什么区别
@implementation aClass {
   aType *aVariable
}

- (void)aMethod: {
}

@implementation bClass

bType *bVariable

- (void)bMethod: {
}

bVariable是全球性的吗?

1 个答案:

答案 0 :(得分:2)

  

bVariable是全球性的吗?

Objective-C是C的扩展,这是一个标准的C全局变量声明。

您可能还应该查看与{C}中的全局变量相关的staticextern的含义。

HTH

<强>附录

  

回到第一个问题,不同之处在于我无法在整个项目中再次定义bVariable,而术语aVariable可以重复使用吗?

简短回答:不,至少不是你如何表达这个问题。

答案很长:你有两个声明,每个声明声明一个变量并关联一个名称(或标识符< / em>) - aVariablebVariable - 使用该变量。除了类型,它是声明的一部分,变量具有生存期 - 变量存在多长时间 - 以及范围 - 程序中可以访问变量的部分。范围可以嵌套,内部范围可以包含使用与外部范围相同的名称的声明,这会导致隐藏 - 外部的变量无法通过名称直接访问范围。

全局变量是 lifetime 是程序的整个执行的变量,但 scope 是全局变量(直接) )可访问的需要是整个程序(参见(Objective-)C中的static限定符)和不同的全局变量与非重叠的范围 具有相同的名称

实例变量的生存期与其拥有的类实例的变量相同,其范围是该班的成员。

还有 local 变量,其生命周期和范围是声明它们的包含方法,函数,块等。

以上只是一个简短的摘要,您应该查看所有斜体术语的含义。