看书笔记6-10

六:理解对“属性”这一概念

可以用@property语法来定义对象中的所封装的数据
通过"特质"来制定存储数据所需的正确语义
在设置属性所对应的实例变量时,一定要遵从该属性所声明的语义。
开发iOS程序时应该使用nonatomic属性,因为atmoic属性会严重影响性能

七:在对象内部尽量直接访问实例变量

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

八:理解"对象等同性"这一概念

若想检测对象的等同性,请提供"isEqual:"和"hash"方法
相同的对象必须具有相同的哈希码,但是两个哈希码相同的对象却未必相同。
不要盲目地逐个检测每条属性,而是应该依照具体需求来制定检测方案
编写hash方法时,应该使用计算速度快而且哈希码碰撞几率低的算法

九:以"类族模式"隐藏实现细节

类族模式可以把实现细节隐藏在一套简单的公共接口后面
系统框架中经常使用类族
从类族的公共抽象基类中继承子类时要当心,若有开发文档,则应首先阅读

10:在既有类中使用关联对象存放自定义数据

可以通过"关联对象"机制来把两个对象连起来
定义关联对象时可指定内存管理语义,用以模仿定义属性时所采用的“拥有关系”与非拥有关系"
只有在其他做法不可行时才应选用关联对象,因为这种做法通常会引入难于查找的bug。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,117评论 6 13
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,352评论 11 349
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 三年前,杜老头老婆死的那天下午,他扛着锄头下地干活,看到地里的邻居,圆溜溜的眼睛转起来,对邻居说:嘿,大弟,知道吗...
    喜乐派小六阅读 258评论 0 0