【发布时间】:2012-07-24 15:25:18
【问题描述】:
所以我在头文件中使用了@property 键。
如果我这样做了,我应该在我的实现中使用@synthesize 键,对吧?但我想知道,是否有一个实际的原因我必须这样做?我只是想知道为什么在标题中写 @property 不足以让代码知道我的意图(自动生成 get/set 方法)。
当然,根据Why we have to synthesize?,我们编写@synthesize 来生成get/set 方法。但我的问题是关于为什么标题中的@property 不够?
我问是因为每当我在标题中写@property 时,我都会立即转到实现并写@synthesize。所以对我来说,使用@synthesize 的唯一原因是补充@property 关键字。这似乎是多余的,让我假设@synthesize 不存在,因为它有其他用途。其他用途是什么?
【问题讨论】:
-
实际上在 Xcode 和 LLVM 的下一次迭代中,您将不需要键入 synthesize。据我了解,它会自动合成您的属性。
-
@RyanPoolos:他们有没有提到他们为什么要做出这样的改变?
-
在与 ios 6 一起发布的 Xcode 版本中,不再需要使用“@synthesize”,因为他们正在升级语言以包含“默认合成”和许多其他减少所需的代码量。
-
@Hassan,它只会生成您没有手动编写的访问器,这与
@synthesize今天的行为方式相同。 -
@Hassan 您可以将
@property指定为只读,如果您只想要一个getter,仍然使用@synthesize。
标签: objective-c