可能重复:
Properties and Instance Variables in Objective-C 2.0
Objective-C Properties with or without instance variables
以下两段代码有什么区别?两者都是可编辑的,我不知道哪个是“正确的”。
@interface JTPlayer : NSObject {
NSString *userId;
NSString *name;
BOOL inBattle;
}
@property (nonatomic, copy) NSString *userId;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) BOOL inBattle;
@end
和
@interface JTPlayer : NSObject
@property (nonatomic, copy) NSString *userId;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) BOOL inBattle;
@end
答案 0 :(得分:1)
一个是声明属性的先前版本。如您所见,您需要手动声明变量,然后声明应用于这些变量的属性。
第二个版本是更新版本,为您管理其余部分,声明变量以及与属性的对应关系。
两个块都是正确的,但第一个块需要更多的击键。此代码(两个版本)应该属于头文件,并附带包含实现的.m扩展名的源文件。此实现将包含 @synthesize 指令,为您生成getter和setter方法。
有关详细信息,请务必阅读Apple Guide to Objective-C。另请查看http://www.raywenderlich.com。
答案 1 :(得分:0)
Objective-C运行时的当前版本不要求您为属性指定实例变量。 @synthesize会自动为你添加它们。
答案 2 :(得分:0)
查看我之前提出的这篇文章。它解释了实例变量和属性。