1引言 1
1.1本书内容 2
1.2本书组织方式 3
1.3支持 5
1.4致谢 6
1.5第4版前言 7
2 Objective-C编程 9
2.1编译并运行程序 9
2.1.1使用Xcode 10
2.1.2使用Terminal 16
2.2解释第一个程序 19
2.3显示变量的值 23
2.4小结 25
2.5练习 26
3类、对象和方法 29
3.1到底什么是对象 29
3.2实例和方法 30
3.3用于处理分数的Objective-C类 32
3.4 @interface部分 35
3.4.1选择名称 35
3.4.2类方法和实例方法 37
3.5 @implementation部分 39
3.6 program部分 41
3.7实例变量的访问及数据封装 47
3.8小结 51
3.9练习 51
4数据类型和表达式 53
4.1数据类型和常量 53
4.1.1 int类型 53
4.1.2 float类型 54
4.1.3 char类型 54
4.1.4限定词:long、long long、short、unsigned及signed 56
4.1.5 id类型 56
4.2算术表达式 57
4.2.1运算符的优先级 58
4.2.2整数运算和一元负号运算符 60
4.2.3模运算符 62
4.2.4整型值和浮点值的相互转换 64
4.2.5类型转换运算符 65
4.3赋值运算符 66
4.4 Calculator类 67
4.5练习 70
5循环结构 73
5.1 for语句 74
5.1.1键盘输入 81
5.1.2嵌套的for循环 83
5.1.3 for循环的变体 85
5.2 while语句 86
5.3 do语句 90
5.4 break语句 92
5.5 continue语句 92
5.6小结 93
5.7练习 93
6选择结构 95
6.1 if语句 95
6.1.1 if-else结构 100
6.1.2复合条件测试 103
6.1.3嵌套的if语句 106
6.1.4 else if结构 107
6.2 switch语句 117
6.3 Boolean变量 120
6.4条件运算符 125
6.5练习 127
7类 129
7.1分离接口和实现文件 129
7.2合成存取方法 134
7.3使用点运算符访问属性 136
7.4具有多个参数的方法 137
7.4.1不带参数名的方法 139
7.4.2关于分数的操作 140
7.5局部变量 142
7.5.1方法的参数 143
7.5.2 static关键字 144
7.6 self关键字 147
7.7在方法中分配和返回对象 148
7.8练习 151
8继承 153
8.1一切从根类开始 153
8.2通过继承来扩展:添加新方法 158
8.2.1 Point类和对象创建 162
8.2.2 @class指令 163
8.2.3具有对象的类 167
8.3覆写方法 171
8.4抽象类 175
8.5练习 176
9多态、动态类型和动态绑定 179
9.1多态:相同的名称,不同的类 179
9.2动态绑定和id类型 182
9.3编译时和运行时检查 184
9.4 id数据类型与静态类型 185
9.5有关类的问题 187
9.6使用@try处理异常 192
9.7练习 194
10变量和数据类型 197
10.1对象的初始化 197
10.2作用域回顾 200
10.2.1控制实例变量作用域的指令 200
10.2.2全局变量 202
10.2.3静态变量 204
10.3枚举数据类型 207
10.4 typedef语句 211
10.5数据类型转换 212
10.6位运算符 214
10.6.1按位与运算符 215
10.6.2按位或运算符 216
10.6.3按位异或运算符 217
10.6.4一次求反运算符 217
10.6.5向左移位运算符 219
10.6.6向右移位运算符 219
10.7练习 220
11分类和协议 223
11.1分类 223
11.2类的扩展 228
11.3协议和代理 230
11.3.1代理 233
11.3.2非正式协议 233
11.4合成对象 234
11.5练习 236
12预处理程序 239
12.1 #define语句 239
12.2 #import语句 246
12.3条件编译 247
12.3.1 #ifdef、#endif、#else和#ifndef语句 247
12.3.2 #if和#elif预处理程序语句 250
12.3.3 #undef语句 251
12.4练习 251
13基本的C语言特性 253
13.1数组 254
13.1.1数组元素的初始化 256
13.1.2字符数组 257
13.1.3多维数组 258
13.2函数 260
13.2.1参数和局部变量 262
13.2.2函数的返回结果 263
13.2.3函数、方法和数组 267
13.3块(Blocks) 268
13.4结构 272
13.4.1结构的初始化 275
13.4.2结构中的结构 276
13.4.3关于结构的补充细节 278
13.4.4不要忘记面向对象编程思想 279
13.5指针 279
13.5.1指针和结构 283
13.5.2指针、方法和函数 285
13.5.3指针和数组 286
13.5.4指针运算 297
13.5.5指针和内存地址 299
13.6它们不是对象 299
13.7其他语言特性 300
13.7.1复合字面量 300
13.7.2 goto语句 300
13.7.3空语句 301
13.7.4逗号运算符 301
13.7.5 sizeof运算符 302
13.7.6命令行参数 303
13.8工作原理 305
13.8.1事实#1:实例变量存储在结构中 305
13.8.2事实#2:对象变量实际上是指针 306
13.8.3事实#3:方法是函数,而消息表达式是函数调用 306
13.8.4事实#4:id类型是通用指针类型 307
13.9练习 307
14 Foundation框架简介 309
14.1 Foundation文档 309
15数字、字符串和集合 313
15.1数字对象 313
15.2字符串对象 318
15.2.1 NSLog函数 318
15.2.2 description方法 319
15.2.3可变对象与不可变对象 320
15.2.4可变字符串 327
15.3数组对象 333
15.3.1制作地址簿 337
15.3.2数组排序 353
15.4词典对象 360
15.4.1枚举词典 361
15.5集合对象 363
15.5.1 NSIndexSet 367
15.6练习 370
16使用文件 373
16.1管理文件和目录:NSFileManager 374
16.1.1使用NSData类 379
16.1.2使用目录 380
16.1.3枚举目录中的内容 383
16.2使用路径:NSPathUtilities.h 385
16.2.1常用的路径处理方法 388
16.2.2复制文件和使用NSProcessInfo类 390
16.3基本的文件操作:NSFileHandle 394
16.4 NSURL类 399
16.5 NSBundle类 400
16.6练习 401
17内存管理和自动引用计数 403
17.1自动垃圾收集 405
17.2手工管理内存计数 406
17.2.1对象引用和自动释放池 407
17.3事件循环和内存分配 409
17.4手工内存管理规则的总结 411
17.5自动引用计数(ARC) 412
17.6强变量 412
17.7弱变量 413
17.8 @autoreleasepool块 415
17.9方法名和非ARC编译代码 415
18复制对象 417
18.1 copy和mutableCopy方法 418
18.2浅复制与深复制 420
18.3实现<NSCopying>协议 422
18.4用设值方法和取值方法复制对象 425
18.5练习 428
19归档 429
19.1使用XML属性列表进行归档 429
19.2使用NSKeyedArchiver归档 432
19.3编码方法和解码方法 433
19.4使用NSData创建自定义档案 440
19.5使用归档程序复制对象 444
19.6练习 445
20 Cocoa和Cocoa Touch简介 447
20.1框架层 447
20.2 Cocoa Touch 448
21编写iOS应用程序 451
21.1 iOS SDK 451
21.2第一个iPhone应用程序 451
21.2.1创建新的iPhone应用程序项目 454
21.2.2输入代码 457
21.2.3设计界面 460
21.3 iPhone分数计算器 466
21.3.1启动新的Fraction Calculator项目 468
21.3.2定义视图控制器 468
21.3.3 Fraction类 474
21.3.4处理分数的Calculator类 477
21.3.5设计UI 479
21.4小结 479
21.5练习 481
附录A术语表 483
附录B地址簿示例源代码 495