Objective-C:这两项财产分配有什么区别?

时间:2013-01-22 09:13:56

标签: objective-c header-files

之间有什么区别
@property (nonatomic, retain) NSString *subject, *name, *kind;

@property (nonatomic, retain) NSString *subject;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *kind;

我认为功能完全相同,但第一个只能节省您输入和一些代码行。我不确定这是我要问的原因:)。

1 个答案:

答案 0 :(得分:2)

@property (nonatomic, retain) NSString *valtOnder, *name, *soort;

@property (nonatomic, retain) NSString *valtOnder;
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *soort;

两种方式都是一样的。

但我后来更喜欢。原因??

如果您有任何拼写错误或任何错误,编译器将指向具有该属性/变量名称的行。

如果我写了几十个属性和/或变量,那么我必须查找它们中的每一个,哪一个是导致错误的根本原因....因为我使用了@synthesize很长一段时间,所以很难找到。

所以我总是建议并指导其他人对变量,属性,合成等进行一行声明。

我很懒。很少有人想为什么要多次写同样的东西?额外的时间和工作。

但是多行会更具可读性。您只需编码一次就可以读取数百次,因此只需几秒钟即可输入一些额外的关键字。并且感谢所有为您提供自动完成功能的IDE,所以现在这个理由已经过时了。

编辑:

根据vikingosegundo评论,

您永远不应将retain用于NSString,请使用copy

对于不可变对象,copy不应使用retain