码迷,mamicode.com
首页 > 其他好文 > 详细

编程的有效方法--实例变量的访问

时间:2016-08-04 19:03:02      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

1、为什么写这篇微博

  在对象外部访问实例变量时,通过属性来作,而在对象内部访问实例变量,是应该直接访问还是通过属性访问,一直存在着很大争议。要想解决这一问题,必须明白这两者实现方式的区别;

2、二者实现方式的区别

  通过直接访问的形式不经过OC的”方法派发“(以后会深入)的步骤,访问的速度较快一些。这种方式会直接访问实例变量的那块内存,而不会调用其设置方法,这样就绕过了实例变量所定义的“内存管理语义”。比如,在ARC下直接访问被Copy所定义的实例变量,它不会拷贝这个实例变量。

  如此一来,就引申出了这样的一个现象。通过直接访问实例变量的方式,不会触发KVO,因为KVO的触发是基于内存地址的改变。

  通过属性访问实例变量有助于我们排查错误,例如我们可以在setter或者getter方法中新增断点,检测引用时机;

3、二者的使用时机

  1>在对象内部访问实例变量时,应该使用直接访问来读,通过属性来写;

  2>在初始化和delloc方法中,应该使用直接访问的方式读和写;(子类中可能覆写了父类的setter方法)

  3>有时会使用惰性初始化来配置某一份数据,此时应该通过属性写入数据;(懒加载)

编程的有效方法--实例变量的访问

标签:

原文地址:http://www.cnblogs.com/zhuyiios/p/5737835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!