2021 / 05 / 14
_property vs self.property
SomeClass.h
@interface SomeClass : NSObject
@property NSString *property;
@end
实际使用中我们是可以有两种方式使用的:
-
_property -
self.property
那么究竟什么时候用第一种什么时候用第二种?
一般来说你可能会在getter/setter/init/dealloc方法种用到_property,其他任何情况都应该是用self.property
为什么?
因为调用self.property实际上是去访问了这个属性的getter方法,如果是self.property = @"something"则是去调用这个属性的setter方法。
而_property则是直接访问这个变量。
- (Type)property{
return 2*_property;
}
// AND/OR
- (void)setProperty:(Type)property
{
_property = 2*property;
}
所以如果有复写这个属性的getter方法和setter方法,那么_property和self.property就会变得不同。