标题：Obejctive-C 2.0 Mac和iOS开发实践指南
基本信息
原书名： Learning Objective-C 2.0: A Hands-On Guide to Objective-C for Mac and iOS Developers 
原出版社： Addison-Wesley Professional 
作者： (美)Robert Clair [作译者介绍] 
译者： 李强 
出版社：机械工业出版社 
上架时间：2011-3-7
出版日期：2011 年2月
开本：16开
页码：283
版次：1-1
内容简介
《obejctive-c 2.0 mac和ios开发实践指南》专门为那些想要学习objective-c以便为mac os x或ios编写程序的程序员量身打造。本书分为四部分。第一部分介绍学习objective-c编程所需的c语言基础知识。第二部分介绍objective-c编程的核心知识，包括消息机制、类和对象、类对象等。第三部分介绍objective-c中的高级概念，包括引用计数、垃圾收集和objective-c 2.0的新功能块。第四部分提供了objective-c程序员常用的信息和资料。本书大多数章末都提供了练习，读者可以通过练习巩固在书中学到的知识。
《obejctive-c 2.0 mac和ios开发实践指南》内容精练、可读性强、易于学习，侧重通过示例来介绍知识点和概念，是一本学习objective-c 2.0不可多得的入门实践指南。本书适合想要学习objective-c 2.0编程语言的初、中级程序员阅读，也可以作为社会培训机构的入门级培训教辅材料。[1]
目录
对本书的赞誉 
译者序 
前言 
致谢 
第一部分 objective-c简介 
第1章　c，objective-c的基础 2 
1.1　c程序的结构 3 
1.1.1　main函数 3 
1.1.2　格式化 3 
1.1.3　注释 4 
1.1.4　变量和函数名 4 
1.1.5　命名惯例 5 
1.1.6　文件 5 
1.2　变量 6 
1.2.1　整数类型 6 
1.2.2　浮点类型 7 
1.2.3　真值 7 
1.2.4　初始化 7 
1.2.5　指针 8 
1.2.6　数组 9 
.1.2.7　字符串 10 
1.2.8　结构 10 
1.2.9　typedef 12 
1.2.10　枚举常量 12 
1.3　运算符 12 
1.3.1　算术运算符 12 
1.3.2　余数运算符 13 
1.3.3　自增和自减运算符 13 
1.3.4　优先级 13 
1.3.5　取反 14 
1.3.6　比较 14 
1.3.7　逻辑运算符 14 
1.3.8　逻辑取反 15 
1.3.9　赋值运算符 15 
1.3.10　转换和强制类型转换 16 
1.3.11　其他赋值运算符 16 
1.4　表达式和语句 17 
1.4.1　表达式 17 
1.4.2　计算表达式 17 
1.4.3　语句 18 
1.4.4　复合语句 18 
1.5　程序流程 18 
1.5.1　if 18 
1.5.2　条件表达式 19 
1.5.3　while 20 
1.5.4　do-while 20 
1.5.5　for 20 
1.5.6　break 21 
1.5.7　continue 22 
1.5.8　逗号表达式 22 
1.5.9　switch 22 
1.5.10　goto 23 
1.5.11　函数 24 
1.5.12　声明函数 25 
1.6　预处理器 26 
1.6.1　包含文件 26 
1.6.2　#define 26 
1.6.3　条件编译 27 
1.7　printf 28 
1.8　使用gcc和gdb 29 
1.9　小结 30 
1.10　练习 30 
第2章　c变量 33 
2.1　objective-c程序的内存布局 33 
2.2　自动变量 34 
2.3　外部变量 35 
2.4　声明关键字 35 
2.4.1　auto 35 
2.4.2　extern 36 
2.4.3　static 36 
2.4.4　register 37 
2.4.5　const 37 
2.4.6　volatile 37 
2.5　作用域 38 
2.5.1　自动变量的作用域 38 
2.5.2　复合语句和作用域 38 
2.5.3　外部变量的作用域 39 
2.6　动态分配 39 
2.7　小结 41 
2.8　练习 42 
第3章　面向对象编程简介 43 
3.1　面向对象编程 43 
3.1.1　类和实例 43 
3.1.2　方法 44 
3.1.3　封装 44 
3.1.4　继承 44 
3.1.5　多态 45 
3.1.6　面向对象语言的主要特点是什么 45 
3.2　objective-c简介 45 
3.2.1　定义类 46 
3.2.2　类名作为类型 48 
3.2.3　消息（调用方法） 48 
3.2.4　类对象和对象创建 50 
3.2.5　内存管理 51 
3.3　objective-c添加 51 
3.3.1　运行时 51 
3.3.2　名称 52 
3.3.3　消息表达式 52 
3.3.4　编译器指令 52 
3.3.5　直接量字符串 52 
3.3.6　objective-c关键字 53 
3.3.7　cocoa数字类型 55 
3.4　小结 56 
第4章　第一个objective-c程序 57 
4.1　使用xcode构建 57 
4.2　objective-c程序结构 59 
4.3　面向对象的hello world 61 
4.3.1　greeter.h 63 
4.3.2　greeter.m 65 
4.4　helloobjectivec.m 68 
4.5　小结 69 
4.6　练习 70 
第二部分　语言基础 
第5章　消息 72 
5.1　方法 72 
5.1.1　一个简单的方法 72 
5.1.2　带有参数的方法 73 
5.2　消息 74 
5.3　消息细节 76 
5.3.1　嵌套 76 
5.3.2　向nil发送消息 77 
5.3.3　向self发送消息 78 
5.3.4　覆盖并向super发送消息 78 
5.3.5　选择器 80 
5.3.6　具有相同名称的方法 81 
5.3.7　动态类型和静态类型 82 
5.4　幕后工作 83 
5.5　消息转发 84 
5.6　效率 85 
5.7　内省和其他运行时乐趣 87 
5.8　小结 88 
5.9　练习 88 
第6章　类和对象 90 
6.1　定义类 90 
6.1.1　接口部分 90 
6.1.2　@class指令 91 
6.1.3　实现部分 92 
6.1.4　导入 92 
6.2　子类化一个类 93 
6.2.1　定义一个子类 93 
6.2.2　子类示例 94 
6.2.3　类继承 97 
6.2.4　类层级示例 97 
6.2.5　抽象类 98 
6.3　创建对象 99 
6.3.1　对象分配 99 
6.3.2　对象初始化 100 
6.4　销毁对象 106 
6.5　复制对象 107 
6.5.1　浅复制和深复制 108 
6.5.2　可变复制和不可变复制 108 
6.5.3　在自己的类中实现复制 109 
6.6　小结 111 
6.7　练习 112 
第7章　类对象 113 
7.1　类对象 113 
7.1.1　类类型 114 
7.1.2　类方法 115 
7.2　其他类方法 116 
7.2.1　简便构造函数 116 
7.2.2　单体 118 
7.2.3　初始化类 118 
7.3　模拟类变量 120 
7.4　小结 124 
7.5　练习 125 
第8章　框架 127 
8.1　什么是框架 127 
8.2　cocoa框架 128 
8.3　appkit 129 
8.4　core foundation 130 
8.4.1　core foundation对象的内存管理 131 
8.4.2　自由转换 132 
8.5　core graphics 133 
8.6　core animation 133 
8.7　其他apple提供的框架 134 
8.8　第三方框架 134 
8.9　幕后揭秘 135 
8.10　小结 135 
第9章　常用foundation类 136 
9.1　可变类和不可变类 136 
9.2　类簇 136 
9.3　nsstring 137 
9.3.1　nsstring示例 138 
9.3.2　c字符串和nsstring之间的转换 140 
9.3.3　直接量字符串 141 
9.4　集合类 141 
9.4.1　nsarray 141 
9.4.2　nsdictionary 144 
9.4.3　nsset 145 
9.5　nsnumber 146 
9.6　nsnull 147 
9.7　nsdata 148 
9.7.1　访问nsdata的字节 149 
9.7.2　文件和nsdata之间的转换 149 
9.8　nsurl 149 
9.9　结构 150 
9.10　小结 151 
9.11　练习 151 
第10章　objective-c中的控制结构 153 
10.1　if语句 153 
10.2　for语句和隐式循环 156 
10.2.1　for语句 156 
10.2.2　隐式循环 156 
10.2.3　带有块的隐式循环 157 
10.3　while语句和nsenumerator 157 
10.4　快速枚举 159 
10.5　一个使用快速枚举的示例 161 
10.6　异常 164 
10.6.1　抛出自己的异常 165 
10.6.2　多个@catch语句块 166 
10.6.3　嵌套异常处理 167 
10.6.4　使用异常 168 
10.6.5　应该使用异常吗 168 
10.7　小结 170 
10.8　练习 170 
第11章　分类、扩展和安全 172 
11.1　分类 172 
11.1.1　使用分类覆盖方法 174 
11.1.2　分类的其他用法 175 
11.2　扩展 176 
11.3　实例变量作用域（访问控制） 177 
11.4　对方法的访问控制 178 
11.5　命名空间 179 
11.6　安全 179 
11.7　从objective-c调用c函数 181 
11.7.1　技术上 181 
11.7.2　实践上 182 
11.7.3　哲学上 182 
11.8　小结 182 
11.9　练习 182 
第12章　特性 184 
12.1　在对象之外访问实例变量（不要这么做） 184 
12.2　声明和实现访问器 185 
12.3　使用特性的访问器 187 
12.4　@property语句 189 
12.4.1　assign、retain和copy 189 
12.4.2　readwrite和readonly 190 
12.4.3　nonatomic 190 
12.4.4　setter=nam和getter=name 191 
12.4.5　attributes和@dynamic 191 
12.5　关于@dynamic的更多内容 191 
12.6　特性和内存管理 193 
12.7　子类化和特性 194 
12.8　对readonly特性隐藏setter 195 
12.9　特性作为文档 195 
12.10　点语法 196 
12.10.1　点语法和特性 197 
12.10.2　点语法和c结构 198 
12.11　小结 199 
12.12　练习 199 
第13章　协议 201 
13.1　协议 201 
13.2　使用协议 202 
13.2.1　声明一个协议 202 
13.2.2　采用协议 203 
13.2.3　协议作为类型 203 
13.2.4　特性和协议 203 
13.3　tableprinter示例 204 
13.3.1　tableprinterdatasource 205 
13.3.2　tableprinter 205 
13.3.3　fruitbasket 207 
13.3.4　main 209 
13.3.5　一个问题 210 
13.3.6　实现可选的方法 210 
13.4　协议对象和一致性测试 211 
13.5　非正式协议 212 
13.6　小结 212 
13.7　练习 213 
第三部分　高级概念 
第14章　引用计数 216 
14.1　问题 216 
14.2　引用计数 217 
14.3　接受对象 219 
14.4　所有权 221 
14.5　dealloc 222 
14.6　返回对象 223 
14.6.1　autorelease 224 
14.6.2　自动释放池 224 
14.6.3　管理自动释放池 225 
14.6.4　回顾简便构造函数 226 
14.6.5　自动释放和iphone 226 
14.6.6　使用额外的自动释放池来控制内存使用 226 
14.7　retaincount 227 
14.8　多线程 228 
14.9　何时引用计数不好 229 
14.10　保留循环 230 
14.11　最后说再见：曲终人散时 233 
14.12　小结 233 
14.13　练习 234 
第15章　垃圾收集 236 
15.1　垃圾收集：理论 236 
15.2　垃圾收集：实践 237 
15.3　使用垃圾收集器 238 
15.4　终结器 240 
15.5　malloc和垃圾收集 241 
15.6　core　foundation对象和垃圾收集 241 
15.7　过程中的一些难点 242 
15.7.1　appkit中的透明指针问题 242 
15.7.2　内部指针 245 
15.7.3　错误的根对象 246 
15.8　垃圾收集的优点和缺点 246 
15.8.1　积极方面 246 
15.8.2　消极方面 246 
15.8.3　应该使用垃圾收集吗 246 
15.9　小结 247 
15.10　练习 247 
第16章　块 251 
16.1　函数指针 251 
16.1.1　用函数指针调用一个函数 253 
16.1.2　使用函数指针 253 
16.2　使用函数指针的问题 255 
16.3　nsinvocation 256 
16.4　块 258 
16.4.1　块指针 258 
16.4.2　访问变量 259 
16.4.3　块变量 261 
16.4.4　块是基于栈的 261 
16.4.5　全局块 262 
16.4.6　块是objective-c对象 262 
16.4.7　复制块 262 
16.4.8　块的内存管理 263 
16.4.9　陷阱 265 
16.4.10　cocoa中的块 266 
16.4.11　样式问题 269 
16.5　一些原理上的限制 270 
16.6　小结 270 
16.7　练习 270 
第四部分　附录 
附录a　保留字和编译器指令 274 
附录b　自由转换类 275 
附录c　32位和64位 276 
附录d　运行时，旧的和新的 279 
附录e　objective-c的资源 282