目标C中的类声明有什么区别?

时间:2011-09-02 20:19:20

标签: objective-c memory-management

  

可能重复:
  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

3 个答案:

答案 0 :(得分:1)

一个是声明属性的先前版本。如您所见,您需要手动声明变量,然后声明应用于这些变量的属性。

第二个版本是更新版本,为您管理其余部分,声明变量以及与属性的对应关系。

两个块都是正确的,但第一个块需要更多的击键。此代码(两个版本)应该属于头文件,并附带包含实现的.m扩展名的源文件。此实现将包含 @synthesize 指令,为您生成getter和setter方法。

有关详细信息,请务必阅读Apple Guide to Objective-C。另请查看http://www.raywenderlich.com

答案 1 :(得分:0)

Objective-C运行时的当前版本不要求您为属性指定实例变量。 @synthesize会自动为你添加它们。

答案 2 :(得分:0)

查看我之前提出的这篇文章。它解释了实例变量和属性。

Objective-C Properties with or without instance variables