我的教授多次明确告诉我们,在 Xcode 4.6 调用中:
@synthesize suit;
与调用相同:
@synthesize suit = _suit;
在那个 Xcode 将创建一个 ivar 并使用下划线命名约定命名它(示例@property suit
将获得一个名为 ivar 的 ivar _suit
)
但是,我一直在查看文档,并在Apple Documentation EncapsulatingData中找到了这段话
重要提示:如果您使用 @synthesize 而不指定实例变量名称,例如:@synthesize firstName; 实例变量将具有与属性相同的名称。在此示例中,实例变量也将称为 firstName,不带下划线。
这似乎与我的教授直接矛盾。:(
这是我所知道的。在 Xcode 4.6 中,任何@property
声明的内容都会@synthesize
自动获得 -ed,因此您甚至不需要调用@synthesize
. 如果您允许 Xcode 自动合成,它会使用 ivar 下划线名称 ( _suit
)。但是,如果您实现自定义 getter 和 setter,则必须@synthesize
显式调用。
我的问题是这个。当您有一个自定义的 getter 和 setter(就像我一样)并且需要调用时@ synthesize
,Xcode 是否在您未指定名称时使用默认的下划线命名方案?
例如,当我这样称呼时:
@synthesize suit;
Xcode 是否命名底层 ivarsuit
或_suit
?
从我的简单测试和阅读文档来看,这似乎不是我的教授认为的那样@synthesize suit;
。我是个菜鸟,我只是在属性和合成上纠结,所以我需要你的帮助。 @synthesize suit = suit
@synthesize suit = _suit
另外,我该怎么做才能自己测试或在文档中找到实际答案?谢谢。