因此,我在头文件中使用了@property键。

如果这样做,我应该在实现中使用@synthesize键,对吗?但我想知道,我是否有这样做的实际原因?我只是想知道为什么在 header 中写@property不足以使代码知道我的意图(自动生成了get/set方法)。

当然,根据Why we have to synthesize?,我们编写了@synthesize来生成get/set方法。但是我的问题是为什么 header 中的@property还不够呢?
我问是因为每当我在 header 中编写@property时,我都会立即转到实现并编写@synthesize。因此,对我来说,使用@synthesize的唯一原因是对@property关键字的补充。这似乎很多余,让我假设@synthesize如果不存在就不会存在,因为它还有其他用途。这些其他用途是什么?

最佳答案

@synthesize做两件事。它会生成getter/setter对,并为该属性创建iVar。

在这两件事中,我认为创建iVar是何时使用@synthesize和何时不使用@synthesize的关键。当为未在内部存储为iVars的成员创建属性时,(显然)我不使用ojit_code。

即将推出的自动合成功能不会有太大帮助。我总是以i开头的_来命名iVar,因此我仍然需要明确地合成它们。

请参阅@AndrewMadsen链接:看起来像'_'前缀自动合成将生成iVars。

W00t!不用说,我现在对自动合成感到更加兴奋!!

关于objective-c - 有实际的原因为什么我们必须使用@synthesize?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11634157/

10-09 01:48