<<编写高质量iOS代码的52个有效方法>&g

2017-10-17  本文已影响47人  JackLeeVip

第1章 熟悉Objective-C

  1. 了解Objective-C语言的起源
  1. 在类的头文件中尽量少引入其他头文件
  1. 多用字面量语法,少用与之等价的方法
  1. 多用类型常量,少用#define预处理指令
  1. 用枚举表示状态、选项、状态码

第2章 对象、消息、运行期

  1. 理解"属性"这一概念
  1. 在对象内部尽量直接访问实例变量
  1. 理解"对象等同性"这一概念
  1. 以"类族模式"隐藏实现细节
  1. 在既有类中使用关联对象存放自定义数据
  1. 理解 objec_msgSend的作用
  1. 理解消息转发机制
  1. 用"方法调配技术"调试"黑盒方法"
  1. 理解"类对象"的用意

第3章 接口与API设计

  1. 用前缀避免命名空间冲突
  1. 提供"全能初始化方法"
  1. 实现description方法
  1. 尽量使用不可变对象
  1. 使用清晰而协调的命名方式
  1. 为私有方法名加前缀
  1. 理解Objective-C错误模型
  1. 理解NSCopying协议

第4章 协议与分类

  1. 通过委托与数据源协议进行对象间通信要点
  1. 将类的实现代码分散到便于管理的数个分类之中
  1. 总是为第三方类的分类名称加前缀
  1. 勿在分类中声明属性
  1. 使用"class-continuation分类"隐藏实现细节
  1. 通过协议提供匿名对象

第5章 内存管理

  1. 理解引用计数
  1. 以ARC简化引用计数
    ps:实际上,ARC在调用(retain、release、autorelease、dealloc)这些方法时.并不通过普通的Objective-C消息派发机制,而是直接调用其C语言版本.这样做性能更好,因为保留及释放操作需要频繁执行,所以直接调用底层函数能节省很多CPU周期.比方说,ARC会调用与retain等价的底层函数,objc_retain.这也是不能复写retain、release或autorelease的缘由,因为这些方法从来不会被直接调用.
  1. 在dealloc方法中只释放引用并解除监听
  1. 编写"异常安全代码"时留意内存管理问题
  1. 以弱引用避免保留环
  1. 以"自动释放池块"降低内存峰值
  1. 用"僵尸对象"调试内存管理问题
  1. 不要使用retainCount

第6章 块与大中枢派发

  1. 理解"块"这一概念
  1. 为常用的块类型创建typedef
  1. 用handler块降低代码分散程度
  1. 用块引用其所属对象时不要出现保留环
  1. 多用派发队列,少用同步锁
  1. 多用GCD、少用performSelector系列方法
  1. 掌握GCD及操作队列的使用时机
  1. 通过Dispatch Group机制,根据系统资源状况来执行任务
    (在并发队列中,执行任务所用的的并发线程数量,取决于各种因素,而GCD主要是根据系统资源状况来判定这些因素的.)
  1. 使用dispatch_once来执行只需执行一次的线程安全代码
  1. 不要使用dispatch_get_current_queue

第7章 系统框架

  1. 熟悉系统框架
  1. 多用块枚举,少用for循环
  1. 对自定义其内存管理语义的collection使用无缝桥接
    ps:在使用Foundation框架中的字典对象是会遇到一个大问题,那就是其键的内存管理语义为"拷贝",而值得语义却是"保留".除非使用强大的无缝桥接技术,否则无法改变其语义.
  1. 构建缓存是选用NSCache而非NSDicitionary
  1. 精简initialize与load的实现代码
    ps:整数可以在编译期定义,然而可变数组不行,因为它是个Objective-C对象,所以创建实例之前必须先激活运行期系统.注意,某些Objective-C对象也可以在编译期创建,例如NSString实例.然而创建下面这种对象会令编译器报错:
    static NSMutableArray * kSomeObjects = [NSMutableArray new];
  1. 别忘了NSTimer会保留其目标对象

PS:读书时做的纯手打笔记,如有错误,欢迎指正.

上一篇 下一篇

猜你喜欢

热点阅读