在Xcode / Objective C中:是否存在可以强制访问全局变量的语法。我注意到一个类变量静默隐藏了任何全局变量。见例子。并不是说这是一个好主意,而只是好奇。
int someVariable = 56;
@implementation Example {
int someVariable;
}
- (void)print {
printf("Var=%i\n", someVariable);
}
答案 0 :(得分:5)
Apple和大多数Objective-C开发人员使用的约定是将全局名称大写,如果项目使用前缀,也可以为它们添加前缀。例如:
int SomeVariable = 56;
或
int XYZSomeVariable = 56;
这样你的全局名称永远不会与实例变量的名称发生冲突(不是类变量,顺便说一下 - 在Objective-C中没有这样的东西),局部变量或参数如此只要你观察到约定的另一半:本地名称总是以小写字母开头。
修改强>
我还应该提一下,在Objective-C中有一个长期的约定,用带有下划线的实例变量名称作为前缀,这也有助于避免这个问题。实际上,LLVM 4.0自动合成功能现在会自动为声明的属性合成带有下划线前缀的ivars,除非你告诉它不要。例如,如果您在示例中声明了实例变量,如下所示:
@implementation Example
{
int _someVariable;
}
...... ivar无法掩盖全局变量。