第一章 : 熟悉Objective-C
第1项 : 熟悉Objective-C的本质
第2项 : 在头文件中尽可能少的引入其他头文件
第3项 : 优先使用字面语法而不是其他等效方法
第4项 : 优先使用常量而不是预处理器#define
第5项 : 使用枚举来表示状况,选项,状态码
第二章 : 对象, 消息传递机制, 和运行时
第6项 : 理解属性
第7项 : 在对象内部访问实例变量时用直接访问的方式
第8项 : 理解对象对等Understand Object Equality
第9项 : 使用类簇模式(工厂模式)来隐藏实现细节
第10项 : 使用关联对象来为已有类附上自定义数据
第11项 : 理解objc_msgSend的角色
第12项 : 理解消息转发机制
第13项 : 使用Method Swizzling来调试不清楚实现的方法
第14项 : 理解什么是类对象
第三章 : 接口和API设计
第15项 : 使用前缀名称来避免命名空间冲突
第16项 : 有一个指定的初始化程序
第17项 : 实现description方法
第18项 : 优先使用不可变对象
第19项 : 使用清晰且一致的命名
第20项 : 私有方法名带上前缀
第21项 : 理解Objective-C错误模型
第22项 : 理解NSCopying协议
第四章 : 协议和类别
第23项 : 使用delegate和data source协议进行内部对象通信
第24项 : 使用类别将类实现拆分成可管理的几个部分
第25项 : 总是记得在第三方类库的类别(category)上加上前缀
第26项 : 避免在类别里有属性
第27项 : 使用类附加目录来隐藏实现细节
第28项 : 使用协议来提供匿名对象
第五章 : 内存管理
第29项 : 理解引用计数
第30项 : 使用ARC,让引用计数变得更容易
第31项 : 只在dealloc中释放引用和清理观察者状态
第32项 : 注意到安全异常代码的内存管理
第33项 : 使用弱引用来避免引用循环
第34项 : 使用自动释放池来减少高内存占用
第35项 : 使用Zombies来帮助调试内存问题
第36项 : 避免使用retainCount
第六章 : 块(Blocks)和中央调度机制(GCD)
第37项 : 理解块(Blocks)
第38项 : 为公共块类型创建typedefs
第39项 : 使用Handler Blocks来减少代码分离
第40项 : 使用块引用对象来持有它们避免引用循环
第41项 : 优先使用Dispatch队列来加锁而不是Synchronization
第42项 : 优先使用GCD而不是performSelector和友元函数
第43项 : 知道什么时候使用GCD什么时候使用操作队列
第44项 : 使用调度队列来使用Platform Scaling
第45项 : 使用线程安全的dispatch_once来做单例
第46项 : 避免dispatch_get_current_queue
第七章 : 系统框架
第47项 : 熟悉系统框架
第48项 : 优先使用块遍历而不是for循环
第49项 : 为集合选择带有常规内存管理语义的桥接机制
第50项 : 使用NSCache而不是NSDictionary来缓存
第51项 : 保持initialize和load的方法实现精炼简洁
第52项 : 记住,NSTimer会保持(retain)它的目标(target)