dwb人生如戏
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方法,那么_propertyself.property就会变得不同。