访问全球变量

时间:2012-02-13 13:31:22

标签: objective-c xcode

在Xcode / Objective C中:是否存在可以强制访问全局变量的语法。我注意到一个类变量静默隐藏了任何全局变量。见例子。并不是说这是一个好主意,而只是好奇。

int someVariable = 56;

@implementation Example {
    int someVariable;
}

- (void)print {
    printf("Var=%i\n", someVariable);
}

1 个答案:

答案 0 :(得分:5)

Apple和大多数Objective-C开发人员使用的约定是将全局名称大写,如果项目使用前缀,也可以为它们添加前缀。例如:

int SomeVariable = 56;

int XYZSomeVariable = 56;

这样你的全局名称永远不会与实例变量的名称发生冲突(不是类变量,顺便说一下 - 在Objective-C中没有这样的东西),局部变量或参数如此只要你观察到约定的另一半:本地名称总是以小写字母开头。

修改

我还应该提一下,在Objective-C中有一个长期的约定,用带有下划线的实例变量名称作为前缀,这也有助于避免这个问题。实际上,LLVM 4.0自动合成功能现在会自动为声明的属性合成带有下划线前缀的ivars,除非你告诉它不要。例如,如果您在示例中声明了实例变量,如下所示:

@implementation Example
{
    int _someVariable;
}

...... ivar无法掩盖全局变量。