现在随着新Xcode的发布,人们已经说过,属性会自动合成,并且只要您使用前缀'_'
,它们的确可以在不合成的情况下访问。但我最近发现Xcode允许我以另一种方式访问这些属性 - 使用前缀'self.*'
(其中*是属性的名称)。我们应该不再使用@synthesize了吗?
这是正确的吗?我应该使用它吗?它会伤害我的代码吗?
谢谢你。
现在随着新Xcode的发布,人们已经说过,属性会自动合成,并且只要您使用前缀'_'
,它们的确可以在不合成的情况下访问。但我最近发现Xcode允许我以另一种方式访问这些属性 - 使用前缀'self.*'
(其中*是属性的名称)。我们应该不再使用@synthesize了吗?
这是正确的吗?我应该使用它吗?它会伤害我的代码吗?
谢谢你。
随着访问_yourProperty
实例变量,与self.yourProperty
它的getter/setter。只要你确定你没有成本的getter/setter,两者都是一样的(对于getter/setter来说性能损失很小)。但是,一般情况下,您应该使用getter/setter方法(getter/setter自身除外),以备日后更改代码。
编辑:
@Vanthel:下划线是纯粹的约定。如果没有@synthesize
(或@synthesize foo
),编译器会为foo
属性生成变量_foo
。但是,通过@synthesize foo = my_bar
,您可以指定变量my_bar
由foo
的访问者访问。
您能否在单独的段落中说明使用下划线前缀? – amcc
这是正确的。这是新编译器的一个特性。 –
为什么这是新的?属性总是使用点语法来访问... – 2012-08-27 07:23:06
'self.property'已经可用一段时间了... – pasawaya