编写高质量iOS与OS X代码的52个有效方法
2018-12-19 本文已影响0人
liyoucheng2014
一、熟悉Objective-C
- Objective-C的起源
- 为了减少编译时间,.h文件尽量少引入其他头文件
- 多用字面量语法,少用等价方法
- 多用类型常量,少用#define预处理指令
- 多用枚举来表示状态、选项、状态码
二、面向对象的角度分析如何提高OC的代码质量
- 理解“属性”这一概念
- 对象内部尽量直接访问实例变量
- 理解“对象等同性”
- 以类族模式隐藏实现细节
- 在既有类中使用关联对象存放自定义数据
- 理解objc_msgSend(对象的消息传递进制)
- 理解消息转发机制
- 用“方法调配技术”调试“黑盒方法“
- 理解”类对象“的用意
三、介绍OC的接口和API设计来提高OC的代码质量
- 用前缀避免命名空间冲突
- 提供”全能初始化方法“
- 实现description方法
- 尽量使用不可变对象
- 使用清晰而协调的命名方式
- 为私有方法名加前缀
- 理解Objective-C错误模型
- 理解NSCopying协议
四、协议与分类
- 通过委托与数据源协议进行对象间通信
- 把负责类的实现代码分散到便于管理的数个分类之中
- 总是为第三方分类的名称加前缀
- 勿在分类中声明属性
- 使用“class-continuation分类”隐藏实现细节
- 通过协议提供匿名对象
五、内存管理机制
- 理解引用计数
- 以ARC简化引用计数
- dealloc方法中只释放引用并解除监听
- 编写“异常安全代码”时留意内存管理问题
- 以弱引用避免循环引用(避免内存泄漏)
- 以“自动释放池块”降低内存峰值
- 用“僵尸对象”调试内存管理问题
- 不要使用retainCount
六、Block的原理及应用
- 理解“Block"的概念
- 为常用的block类型创建typedef
- 用handler块降低代码分散程度
- 用block块引用其所属对象时避免出现循环引用
七、大中枢开发GCD
- 多用派发队列,少用同步锁
- 多用GCD,少用performSelector
- 掌握GCD及操作队列的使用时机
- 通过Dispatch Grout机制,根据系统资源状况来执行任务
- 使用dispatch_once来执行只需要运行一次的线程安全代码
- 不要使用dispatch_get_current_queue
八、系统框架
- 熟悉系统框架
- 多用块枚举,少用for循环
- 对自定义其内存管理语义的collection使用无缝桥接
- 构建缓存时选用NSCache而非NSDictionary
- 精简load与initialize的实现代码
- 别忘了NSTimer会保留其目标对象
参考
建议先阅读书籍再看总结
- Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法_提取码:atsx
- MrLiuQ的简书
iOS 编写高质量Objective-C代码(一)—— 简介
iOS 编写高质量Objective-C代码(二)—— 面向对象
iOS 编写高质量Objective-C代码(三)—— 接口和API设计
iOS 编写高质量Objective-C代码(四)—— 协议与分类
iOS 编写高质量Objective-C代码(五)—— 内存管理机制
iOS 编写高质量Objective-C代码(六)—— block专栏
iOS 编写高质量Objective-C代码(七)—— GCD专栏
iOS 编写高质量Objective-C代码(八)—— 系统框架