变量声明的差异 - 目标c

时间:2015-07-18 06:33:21

标签: objective-c

我的问题主要是概念性的 - 以下两段代码之间究竟有什么区别?

1)

@implementation Person 
{    
NSString *name;
// other variables
} 

- (void) someMethod

@end

2)

@implementation Person

NSString *name;
//other variables

- (void) someMethod

@end

我问的原因是我能够编译一些遵循格式#2而不是格式#1的代码,我很好奇两者之间的区别。

2 个答案:

答案 0 :(得分:1)

第一个声明一个实例变量。该名称属于Person对象。

第二个会声明一个全局变量。

答案 1 :(得分:1)

如果我没有错,使用第二种格式,你宣布一个全局(用于编译单元)变量(缺少的*是一个拼写错误,或者它是"真实的"?)。 / p>

关于第一种格式:取决于objective-c版本,它可能是正确的还是错误的。 以前的版本(例如在OS X 10.5中)需要@intereface

中的属性定义
@interface Person 
{    
NSString *name;
// other stuff
} 

- (void) someMethod

@end

这是Person类的属性定义,而现在这个要求是"放宽",属性也可以在实现块中声明(但你必须使用{}