Objective-C 变量声明在 { } 与 @interface & @end 外部



请任何人告诉我在 { } 内声明变量与在头文件中声明 @interface 和 @end 外部有什么区别。这两种方式都会导致成功的编译。

如果您希望变量成为类(也称为实例变量)的一部分,则在括号内声明它,否则将其声明为与类无关的全局变量。

例如

// XYZ.h
@interface XYZ
{
  int myinstancevariable;
}
@end
int myglobalvariable;

XYZ* a = [[XYZ alloc] init];
NSLog(@"%d", [a myinstancevariable]);
NSLog(@"%d", myglobalvariable );

编辑:忘记{}

如果你在code block - {}内声明一个变量,它的作用域(生命周期)只在该块内。

如果你在@interface@end之外声明它的范围在该文件内。如果这是一个头文件,则可以全局使用此变量。

最新更新