首页 > 代码库 > 属性存取、直接访问实例变量
属性存取、直接访问实例变量
属性的读取采用点语法,访问对应的set和get方法。而直接访问是直接访问的对象实例的内存。这两者有什么区别?在什么情况应该使用哪种方法呢?
一、区别
直接访问实例变量有如下几种特质。
1、不经过Objective-C的方法派发,直接访问实例变量的内存,速度快。
2、由于没调用set方法,所以绕过了属性定义时声明的“内存管理语义”,只会保留新值,释放旧值。
3、不会触发“键值观测”KVO机制。
4、无法通过给set和get打断点来进行调试。
二、使用场景
通用情况:
在类的外部,使用属性存取。
在类的内部,如果是设置实例变量,采用属性设置,如果是获取实例变量,直接获取。
特殊情况:
1、在对象初始化方法中,尽量采用直接访问,但如果是超类的实例变量,就只能用属性存取;
2、在类的内部,如果在get方法中,惰性初始化某实例变量,那只能使用属性存取。
属性存取、直接访问实例变量
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。