首页 > 其他 > 详细

第7条:在对象内部尽量直接访问实例变量

时间:2016-03-18 23:16:31      阅读:201      评论:0      收藏:0      [点我收藏+]

self.firstName=@"aaa";

_fristName=@"aaa";

这两种写法有几个区别

  •   由于不经过Objective-C的“方法派发”(method dispatch),所以直接访问实例变量的速度当然比较快。在这种情况下,编译器所生成的代码会直接方位保存对象实例变量的那块内存。
  • 直接方位实例变量时,不会调用其“设置方法”,这就绕过了为相关属性所定义的“内存管理语义”。比方说,如果在ARC下直接访问一个声明为copy的属性,那么并不会拷贝属性,只会保留新值并释放旧值。
  • 如果直接访问实例变量,那么不会触发“键值观测”(Key-Value Oberving,KVO)通知。这样做是否会产生问题,还取决于具体的对象行为。
  • 通过属性来访问有助于排查与之相关的错误,因为可以给“获取方法”和/或 “设置方法”中新增“断点”(breakpoint),监控该属性的调用者及其访问时机。

 

  要点

  •   在对象内部读取数据时,应该直接通过实例变量来读,而写入数据时,则应通过属性来写。
  •     在初始化方法及dealloc方法中,总是应该直接通过实例变量来读写数据。
  •     有时会使用惰性初始化技术配置某份数据,这种情况下,需要通过属性来读取数据。

第7条:在对象内部尽量直接访问实例变量

原文:http://www.cnblogs.com/lanyayue/p/5293867.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!