我的问题主要是概念性的 - 以下两段代码之间究竟有什么区别?
1)
@implementation Person
{
NSString *name;
// other variables
}
- (void) someMethod
@end
2)
@implementation Person
NSString *name;
//other variables
- (void) someMethod
@end
我问的原因是我能够编译一些遵循格式#2而不是格式#1的代码,我很好奇两者之间的区别。
答案 0 :(得分:1)
第一个声明一个实例变量。该名称属于Person对象。
第二个会声明一个全局变量。
答案 1 :(得分:1)
如果我没有错,使用第二种格式,你宣布一个全局(用于编译单元)变量(缺少的*是一个拼写错误,或者它是"真实的"?)。 / p>
关于第一种格式:取决于objective-c版本,它可能是正确的还是错误的。
以前的版本(例如在OS X 10.5中)需要@intereface
@interface Person
{
NSString *name;
// other stuff
}
- (void) someMethod
@end
这是Person类的属性定义,而现在这个要求是"放宽",属性也可以在实现块中声明(但你必须使用{}
)