OC 直接使用使用实例变量和通过属性来访问实例变量的区别

1、直接使用实例变量(_varName)比通过点语法(self.varName)有更快的访问速度

2、直接访问实例变量,不会调用设置方法,绕过了相关属性所定义的内存管理语义

3、直接访问实例变量,不会触发【键值观察】(Key-Vaule Observinig,KVO)通知。

4、通过属性来访问有助于拍照与之相关的错误。因为可以在setter,getter方法中新增断点,监控该属性的调用者及其访问时机。

具体选择还是要具体确定。不过这还关系到团队编码风格的规定。例如为了编码统一,都使用通过属性访问实例变量。

几个注意点:

1、既要优化,又要监控变量的变化。在写入实例变量时,通过setter方法来做,在读取实例变量时,直接使用(_varName)

2、在初始化方法中若要必须设置实例变量的值,应该直接访问实例变量。因为子类可能覆写初始化方法。

3、使用“惰性初始化”(懒加载,lazy initialization),必须通过“getter”方法来访问属性,否则实例变量永远不会被初始化。

posted @   wjwdive  阅读(302)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
历史上的今天:
2018-06-25 iOS 通知名的通用定义方法
点击右上角即可分享
微信分享提示