因此,我在头文件中使用了@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/