在此列出EOC 52 目录,方便进行总结。
第一章:熟悉Objective-C(1)
第一条:了解Objective-C语言的起源
第二条:在类的头文件中尽量少引用其他头文件
第三条:多用字面量语法,少用与之等价的方法
第四条:多用类型常量,少用#define预处理指令
第五条:多用枚举表示状态、选项、状态码
第二章:对象、消息、运行期(21)
第六条:理解“属性”这一概念
第七条:在对象内部尽量直接访问实例变量
第八条:理解“对象等同性”这一概念
第九条:以“类族模式”隐藏实现细节
第十条:在既有类中使用关联对象存放自定义数据
第十一条:理解“objc_msgSend”的作用
第十二条:理解消息转发机制
第十三条:用“方法调配技术”调试“黑盒方法”
第十四条:理解“类对象”的用意
第三章:接口与API设计(60)
第十五条:用前缀避免命名空间冲突
第十六条:提供“全能初始化方法”
第十七条:实现description方法
第十八条:尽量使用不可变对象
第十九条:使用清晰而协调的命名方式
第二十条:为私有方法名加前缀
第二十一条:理解Objective-C错误模型
第二十二条:理解NSCopying协议
第四章:协议与分类(94)
第二十三条:通过委托与数据源协议进行对象间通信
第二十四条:将类的实现代码分散到便于管理的数个分类之中
第二十五条:总是为第三方类的分类名称加前缀
第二十六条:勿在分类中声明属性
第二十七条:使用“class-continuation”分类隐藏实现细节
第二十八条:通过协议提供匿名对象
第五章:内存管理(117)
第二十九条:理解引用计数
第三十条:以ARC简化引用计数
第三十一条:在delloc方法中只释放引用并解除监听
第三十二条:编写“异常安全代码”时留意内存管理问题
第三十三条:以弱引用避免保留环
第三十四条:以“@autoreleasepool”降低内存峰值
第三十五条:用“僵尸对象”调试内存管理问题
第三十六条:不要使用retainCount
第六章:Block与GCD(149)
第三十七条:理解block
第三十八条:为常用的块类型创建typedef
第三十九条:用handler块降低代码分散程度
第四十条:用块引用其所属对象时不要出现保留环
第四十一条:多用派发队列,少用同步锁
第四十二条:多用GCD,少用performSelector系列方法
第四十三条:掌握GCD及操作队列的使用时机
第四十四条:通过Dispatch Group机制,根据系统资源状况来执行任务
第四十五条:使用dispatch_once来执行只需要运行一次的线程安全代码
第四十六条:不要使用dispatch_get_current_queue
第七章:系统框架(185)
第四十七条:熟悉系统框架
第四十八条:多用块枚举,少用for循环
第四十九条:对自定义其内存管理语义的collection使用无缝桥接
第五十条:构建缓存时选用NSCache而非NSDictionary
第五十一条:精简initialize与load的实现代码
第五十二条:别忘了NSTimer会保留其目标对象