_property vs self.property

SomeClass.h

1
2
3
4
5
@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则是直接访问这个变量。

1
2
3
4
5
6
7
8
9
10
- (Type)property{
return 2*_property;
}

// AND/OR

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

所以如果有复写这个属性的getter方法和setter方法,那么_propertyself.property就会变得不同。


_property vs self.property
https://iplus-studio.top/2021/05/14/property-vs-self-property/
作者
邓伟彬
发布于
2021年5月14日
许可协议