建议:采用直接访问取值的方法
- 直接取值 : _name、_age
- 属性访问 :self.name、self.age
区别:
- 直接访问属性速度快,编译器生成代码会直接访问保存对象的内存
- 直接访问,不会调用getter方法。例如在ARC下访问copy的属性,不会拷贝该属性,只会保留新值,释放旧值。
- 直接访问,不会触发KVO
- 直接访问,可以给setter和getter方法加断点,监控该属性的调用者和访问时机
建议:
- 采用getter方法写值,采用setter读取直接访问变量
- 初始化方法设置属性值,直接访问实例变量,根据情况而定是否采取getter方法
- 懒加载,必须采用setter方法写值,不然永远都不会初始化!
总结
- 对象内部读取数据时,对象读数据采用直接变量来读取,写入数据采用属性值获取
- 初始化方法、dealloc方法中,直接通过实例变量来读取
- 懒加载使用属性值来读取数据
网友评论