我想知道使用 (get) 访问器读取属性值和直接使用 iVar 之间到底有什么区别?
假设我有一个声明属性的类:
@interface Foo : NSObject
@property (strong) NSString *someString;
@end
在实现中我正在使用它。以下两行之间是否有任何区别:
someLabel.text = self.someString;
someLabel.text = _someString;
对于 set 访问器,这很清楚。Afaik 对于强大的属性,访问器负责保留和释放(一个有趣的“附带问题”是如果 ARC 改变了它,即直接设置 iVar [假设它不是 __weak iVar] 也使用 ARC 正确保留和释放),也KVO 需要使用访问器才能正常工作等。但是 getter 呢?
如果没有区别,是否有一种方法被认为是最佳实践?
谢谢