对不起,我不太了解Objective-C。
这是 SomeClass.h :
@interface SomeClass : NSObject
@property NSString *property;
@end
我们可以在 SomeClass.m 中使用property
作为
self.property
和
_property
。
我应该使用哪个?
是否有某种情况决定使用哪种方式?
感谢您的帮助。
答案 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;
}
然后使用_property
和self.property
之间会有所不同。
有意义吗?
答案 1 :(得分:0)
self.property
调用(生成的)getter;相当于[self property]
。
_property
直接访问变量。
The general recommendation是使用self.property
,因为可以覆盖getter以执行特殊操作,例如额外的内存管理,或者懒惰的创建,或其他。
答案 2 :(得分:0)
使用self.property
。
如果您有特定理由忽略此属性的setter,请使用_property
。