2012-08-27 71 views
0

现在随着新Xcode的发布,人们已经说过,属性会自动合成,并且只要您使用前缀'_',它们的确可以在不合成的情况下访问。但我最近发现Xcode允许我以另一种方式访问​​这些属性 - 使用前缀'self.*'(其中*是属性的名称)。我们应该不再使用@synthesize了吗?

这是正确的吗?我应该使用它吗?它会伤害我的代码吗?

谢谢你。

+0

这是正确的。这是新编译器的一个特性。 –

+2

为什么这是新的?属性总是使用点语法来访问... – 2012-08-27 07:23:06

+1

'self.property'已经可用一段时间了... – pasawaya

回答

3

随着访问_yourProperty实例变量,与self.yourProperty它的getter/setter。只要你确定你没有成本的getter/setter,两者都是一样的(对于getter/setter来说性能损失很小)。但是,一般情况下,您应该使用getter/setter方法(getter/setter自身除外),以备日后更改代码。

编辑:

@Vanthel:下划线是纯粹的约定。如果没有@synthesize(或@synthesize foo),编译器会为foo属性生成变量_foo。但是,通过@synthesize foo = my_bar,您可以指定变量my_barfoo的访问者访问。

+0

您能否在单独的段落中说明使用下划线前缀? – amcc

相关问题