0

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

4

2 回答 2

5

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

例如

// XYZ.h

@interface XYZ
{
  int myinstancevariable;
}
@end

int myglobalvariable;

...

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

编辑:忘记{}

于 2012-06-11T07:14:31.593 回答
1

如果您在 a 内声明变量,code block - {}则它的范围(寿命)仅在该块内。

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

于 2012-06-11T07:15:55.540 回答