编写高质量代码-OC 第4章 设计与声明

2三、编写代码要遵循Cocoa API约定
2四、洞悉实例变量设计模式

  • 一、实例变量的命名规范是使用小写字符冲,不包含标点符号和特殊字符。
  • 二、只加入一些绝对必要的实例变量,不然容易形成大的开销。
  • 三、永远不要将变量设置为@public,由于这违反了封装的原则。
  • 四、确保类基本属性对应的实例变量有存储方法。

2五、透彻了解属性的里里外外安全

  • 一、属性的动态性定义,需用关键字@dynamic。属性动态性是相对于@synthesis来讲的,不是由编译器自动生成setter或getter,而是在运行时动态添加的setter和getter.
  • 二、属性采用动态性,与采用静态性相比,能够简化代码的编写,便于代码的管理。
  • 三、默认状况下,可写属性使用的实例变量被称为_propertyName。若是想要使用的实例变量不用名,须要在实现中指示编译器合成的变量。
  • 四、利用类扩展可实现对属性的“篡改”。

2六、存取方法是良好的类接口必要组成部分
2七、明晓类公共领域的方法都是虚方法函数

  • 一、在Objective-C中,全部的方法都是虚方法。
  • 二、实现纯虚方法依赖正式协议来实现
  • 三、协议并非真正的类,他只能声明方法,不能添加数据
  • 四、非正式协议并非真正的协议,它的代码没有约束力

2八、初始化仍是解码取决因而否支持归档和解档编码

  • 一、类的对象支持归档和解档,该类必须遵循NSCoding协议;必须实现对象进行编码(encodeWithCoder:)和解码(initWithCoder:)的方法
  • 二、类的初始化方法和initWithCoder:在角色上并行性存在例外

2九、利用键-值机制访问类的私有成员变量和方法设计

  • 一、在Objective-C中,类的成员变量或方法是没有绝对私有的,能够借助“编译运行时”机制来实现对他们的访问
  • 二、KVC和KVO在定制子类的设计时特别重要
  • 三、KVC、KVO和KVB都支持遍历
  • 四、KVC主要经过isa指针来实现其内部查找定位。KVO其设计基于设计模式中的“观察者模式”。KVB和KVO最明显的使用场景就是在一些界面实时显示很强的地方。

30、浅复制适宜指针而深复制适宜数据
3一、明智而审慎地使用NSCopying指针

  • 一、基类没有实现NSCopying,那么子类的实现必须复制它所继承的实例变量,以及那些在类中声明的实例变量,最安全的方式是使用alloc、init...和set方法
  • 二、类继承了NSCopying的行为,并声明了额外的实例变量,那么也须要实现copyWithZone;
  • 三、若是基类使用了或者有可能使用过NSCopyObject,那么必须使用有别于alloc和init...函数的状况,用不一样的方式处理实例变量。

3二、使用协议来实现匿名对象的提供code

  • 一、采用协议,可灵活实现。实现抽象不该该依赖于细节,而细节应依赖于抽象,下降“声明”和“实现”的耦合度。
  • 二、设计程序采用协议,可减小继承类的复杂性。
相关文章
相关标签/搜索