[美] Matt Galloway《Effective Objective-C 2.0》

[美] Matt Galloway《Effective Objective-C 2.0》

作者:[美] Matt Galloway

出版社:机械工业出版社

出版年:2014-1

评分:8.5

ISBN:9787111451297

所属分类:网络科技

书刊介绍

内容简介

《effective objective-c 2.0:编写高质量ios与os x代码的52个有效方法》是世界级c++开发大师scott meyers亲自担当顾问编辑的“effective software development series”系列丛书中的新作,amazon全五星评价。从语法、接口与api设计、内存管理、框架等7大方面总结和探讨了objective-c编程中52个鲜为人知和容易被忽视的特性与陷阱。书中包含大量实用范例代码,为编写易于理解、便于维护、易于扩展和高效的objective-c应用提供了解决方案。

全书共7章。第1章通论与objective-c的核心概念相关的技巧;第2章讲述的技巧与面向对象语言的重要特征(对象、消息和运行期)相关;第3章介绍的技巧与接口和api设计相关;第4章讲述协议与分类相关的技巧;第5章介绍内存管理中易犯的错误以及如何避免犯这些错误;第6章介绍块与大中枢派发相关的技巧;第7章讲解使用cocoa和cocoa touch系统框架时的相关技巧。

作品目录

译者序

前言

致谢

第1章 熟悉objective-c 1

第1条:了解objective-c语言的起源 1

第2条:在类的头文件中尽量少引入其他头文件 4

第3条:多用字面量语法,少用与之等价的方法 7

第4条:多用类型常量,少用#define预处理指令 11

第5条:用枚举表示状态、选项、状态码 14

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

第6条:理解“属性”这一概念 21

第7条:在对象内部尽量直接访问实例变量 28

第8条:理解“对象等同性”这一概念 30

第9条:以“类族模式”隐藏实现细节 35

第10条:在既有类中使用关联对象存放自定义数据 39

第11条:理解objc_msgsend的作用 42

第12条:理解消息转发机制 46

第13条:用“方法调配技术”调试“黑盒方法” 52

第14条:理解“类对象”的用意 56

.第3章 接口与api设计 60

第15条:用前缀避免命名空间冲突 60

第16条:提供“全能初始化方法” 64

第17条:实现description方法 69

第18条:尽量使用不可变对象 73

第19条:使用清晰而协调的命名方式 78

第20条:为私有方法名加前缀 83

第21条:理解objective-c错误模型 85

第22条:理解nscopying协议 89

第4章 协议与分类 94

第23条:通过委托与数据源协议进行对象间通信 94

第24条:将类的实现代码分散到便于管理的数个分类之中 101

第25条:总是为第三方类的分类名称加前缀 104

第26条:勿在分类中声明属性 106

第27条:使用“class-continuation分类”隐藏实现细节 108

第28条:通过协议提供匿名对象 114

第5章 内存管理 117

第29条:理解引用计数 117

第30条:以arc简化引用计数 122

第31条:在dealloc方法中只释放引用并解除监听 130

第32条:编写“异常安全代码”时留意内存管理问题 132

第33条:以弱引用避免保留环 134

第34条:以“自动释放池块”降低内存峰值 137

第35条:用“僵尸对象”调试内存管理问题 141

第36条:不要使用retaincount 146

第6章 块与大中枢派发 149

第37条:理解“块”这一概念 149

第38条:为常用的块类型创建typedef 154

第39条:用handler块降低代码分散程度 156

第40条:用块引用其所属对象时不要出现保留环 162

第41条:多用派发队列,少用同步锁 165

第42条:多用gcd,少用performselector系列方法 169

第43条:掌握gcd及操作队列的使用时机 173

第44条:通过dispatch group机制,根据系统资源状况来执行任务 175

第45条:使用dispatch_once来执行只需运行一次的线程安全代码 179

第46条:不要使用dispatch_get_current_queue 180

第7章 系统框架 185

第47条:熟悉系统框架 185

第48条:多用块枚举,少用for循环 187

第49条:对自定义其内存管理语义的collection使用无缝桥接 193

第50条:构建缓存时选用nscache而非nsdictionary 197

第51条:精简initialize与load的实现代码 200

第52条:别忘了nstimer会保留其目标对象 205

相关推荐

微信二维码