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

Objective c 目标C中的类声明。有什么区别?,objective-c,memory-management,Objective C,Memory Management,可能重复: 以下两段代码之间的区别是什么?两者都是可编译的,我不知道哪个是“正确的” 及 一个是声明属性的早期版本。如您所见,您需要手动声明变量,然后声明应用于这些变量的属性 第二个版本是更新的版本,它为您管理其余部分,即变量声明和与属性的对应关系 两个块都是正确的,但第一个块需要更多的击键。这段代码(两个版本)应该属于头文件,并附带一个扩展名为.m的源文件,其中包含实现。此实现将包含生成getter和setter方法的@synthesis指令 要了解更多信息,您确实应该阅读。另请检查。当前

可能重复:

以下两段代码之间的区别是什么?两者都是可编译的,我不知道哪个是“正确的”


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

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

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


要了解更多信息,您确实应该阅读。另请检查。

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

查看我不久前发布的这篇文章。它解释了实例变量和属性


该死的,我输入了一个答案,然后发现是重复的@塞吉奥,有时候请做点努力:接受答案并使用搜索工具…谢谢@progrmr,这样更清楚。
@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