我应该使用哪个:self.property或_property

时间:2014-02-13 02:22:32

标签: objective-c

对不起,我不太了解Objective-C。

这是 SomeClass.h

@interface SomeClass : NSObject

@property NSString *property;

@end

我们可以在 SomeClass.m 中使用property作为

self.property

_property

我应该使用哪个?

是否有某种情况决定使用哪种方式?

感谢您的帮助。

3 个答案:

答案 0 :(得分:7)

通常在标准实践中,您只能在getter / setter / init / dealloc方法中使用_property。在所有其他情况下,您使用self.property[self property]

为什么?

使用_property严格用于直接分配或获取值,而使用self.property与调用[self property]相同。

通过这种方式,您可以为所有类在使用此变量时需要遵守的方法创建自定义getter / setter,包括保存变量本身的类

例如:

如果我致电object.property,我实际上是在呼叫[object property]。现在,如果您没有定义自定义方法,但是如果您的对象类中有自定义getter或setter方法,那么这并不重要:

- (Type)property{
    return 2*_property;
}

//AND/OR

- (void)setProperty:(Type)property
{
    _property = 2*property;
}

然后使用_propertyself.property之间会有所不同。

有意义吗?

答案 1 :(得分:0)

self.property调用(生成的)getter;相当于[self property]

_property直接访问变量。

The general recommendation是使用self.property,因为可以覆盖getter以执行特殊操作,例如额外的内存管理,或者懒惰的创建,或其他。

答案 2 :(得分:0)

使用self.property。 如果您有特定理由忽略此属性的setter,请使用_property