在 Objective-C 和 iOS 开发中,self 和 _(下划线)都与类的属性访问相关,但它们的工作机制和使用场景有重要区别
self.property
本质:调用属性的 getter/setter 方法(即 [self setProperty:value] 或 [self property])。
优点:会触发 KVO、懒加载、重写的 getter/setter 等逻辑。
常用场景:在类的外部、或需要触发 setter/getter 逻辑时使用

截屏2025-07-18 10.36.09.png
_property
本质:直接访问实例变量,不经过 getter/setter。
优点:效率高,不会触发 KVO、懒加载等副作用。
常用场景:在初始化(如 init、dealloc、setter/getter 内部)或性能敏感、明确只需操作底层数据时使用。

截屏2025-07-18 10.36.14.png

截屏2025-07-18 10.38.15.png
在 setter 方法中,使用 _model(加下划线)的写法更合理。以下是详细分析和推荐写法:

截屏2025-07-18 10.45.24.png

截屏2025-07-18 10.49.07.png