在括号外定义的ivars和(全局?)变量之间的区别
Difference between ivars and (global?) variables defined outside the brackets
有什么区别
@implementation aClass {
aType *aVariable
}
- (void)aMethod: {
}
和
@implementation bClass
bType *bVariable
- (void)bMethod: {
}
bVariable
是全球性的吗?
Is bVariable
global?
是的。
Objective-C 是 C 的扩展,这是标准的 C 全局变量声明。
您可能还应该查看 static
和 extern
与 C 中全局变量相关的含义。
HTH
附录
So back to the first question, the difference is that I can't define bVariable
again in my entire project, while the term aVariable
can be reused?
简答:不,至少不是你表达问题的方式。
长答案:你有两个声明,每个声明一个变量并关联一个名称(或 identifier)- aVariable
、bVariable
- 使用该变量。除了作为声明一部分的 type,变量还有 lifetime - 变量存在的时间 - 和 scope - 程序中可以访问变量的部分。作用域可以嵌套,内部作用域可以包含使用与外部作用域相同的 name 的声明,这导致 hiding - 变量无法通过其 name.
直接访问外部作用域中的
一个 global 变量是一个 lifetime 是整个程序执行的变量,但是 scope 其中一个全局变量可以(直接)访问需要 而不是 是整个程序 (c.f。 (Objective 中的 static
限定符-)C),并且different具有非重叠范围的全局变量can具有相同的name。
一个实例变量的生命周期与其所属class相同instance,其 scope 是 class.
的成员
还有本地变量,其生命周期和范围是声明它们的包含方法、函数、块等。
以上只是一个简短的总结,您应该查看所有 斜体 术语的含义。
有什么区别
@implementation aClass {
aType *aVariable
}
- (void)aMethod: {
}
和
@implementation bClass
bType *bVariable
- (void)bMethod: {
}
bVariable
是全球性的吗?
Is
bVariable
global?
是的。
Objective-C 是 C 的扩展,这是标准的 C 全局变量声明。
您可能还应该查看 static
和 extern
与 C 中全局变量相关的含义。
HTH
附录
So back to the first question, the difference is that I can't define
bVariable
again in my entire project, while the termaVariable
can be reused?
简答:不,至少不是你表达问题的方式。
长答案:你有两个声明,每个声明一个变量并关联一个名称(或 identifier)- aVariable
、bVariable
- 使用该变量。除了作为声明一部分的 type,变量还有 lifetime - 变量存在的时间 - 和 scope - 程序中可以访问变量的部分。作用域可以嵌套,内部作用域可以包含使用与外部作用域相同的 name 的声明,这导致 hiding - 变量无法通过其 name.
一个 global 变量是一个 lifetime 是整个程序执行的变量,但是 scope 其中一个全局变量可以(直接)访问需要 而不是 是整个程序 (c.f。 (Objective 中的 static
限定符-)C),并且different具有非重叠范围的全局变量can具有相同的name。
一个实例变量的生命周期与其所属class相同instance,其 scope 是 class.
的成员还有本地变量,其生命周期和范围是声明它们的包含方法、函数、块等。
以上只是一个简短的总结,您应该查看所有 斜体 术语的含义。