访问全局变量
问题描述:
在Xcode/Objective C中:是否有可以强制访问全局变量的语法。我注意到一个类变量默默地隐藏任何全局变量。看例子。不建议这是一个好主意,但只是好奇。访问全局变量
int someVariable = 56;
@implementation Example {
int someVariable;
}
- (void)print {
printf("Var=%i\n", someVariable);
}
答
苹果和大多数的Objective-C开发人员使用的约定是大写全局名称,如果该项目使用的前缀,前缀他们。因此,例如:
int SomeVariable = 56;
或
int XYZSomeVariable = 56;
这样,你的全局名称可以从不与实例变量(不类变量,顺便名称冲突 - 有没有这样的事情Objective-C),局部变量或参数,只要您遵守约定的另一半:本地名称始终以小写字母开头。
编辑
我还要提到的是有在Objective-C的长期惯例前面加上下划线,这也将有助于避免此类问题的实例变量名。实际上,LLVM 4.0自动合成功能现在会自动合成具有声明属性的下划线前缀的ivars,除非您告诉它不要。因此,举例来说,如果你已经宣布的实例变量在您的示例如下:
@implementation Example
{
int _someVariable;
}
...伊娃不可能阴影全局变量。
+0
而且,只需使用'-Wshadow' ... – Macmade 2012-10-02 23:30:09
使用'-Wshadow'警告标志通常是一件好事...然后这种东西不会再*沉默*了。 – Macmade 2012-10-02 23:29:33