第1章 安装Xcode 1
1.1 Xcode安装器 1
1.2 运行安装器 2
1.3 升级Xcode 5
1.4 移除与重新安装Xcode 6
1.5 小结 6
第2章 开始Xcode之旅 7
2.1 项目 7
2.1.1 源文件分组 9
2.1.2 智能分组 9
2.2 菜单 10
2.3 编辑器 10
2.4 搜索、符号与重构 11
2.5 获取帮助 12
2.6 构建 13
2.7 保证项目的正确性 14
2.8 协作与版本控制 14
2.9 小结 14
第3章 Xcode布局 15
3.1 项目布局 17
3.1.1 选择布局 17
3.1.2 修改布局 19
3.2 分组与文件 20
3.2.1 项目结构分组 20
3.2.2 智能分组 21
3.2.3 组织分组与内容 21
3.2.4 显示与隐藏分组 22
3.2.5 将布局设为默认布局 23
3.2.6 定制Implementation Files与Interface Builder Files智能分组 24
3.2.7 自定义智能分组 24
3.3 详细信息 27
3.3.1 显示与隐藏详细信息列 28
3.3.2 在Groups & Files列表中显示详细信息 29
3.4 信息窗口 29
3.5 工具栏 30
3.6 状态栏与收藏栏 32
3.7 活动查看器窗口 32
3.8 小结 32
第4章 项目 33
4.1 创建新项目 34
4.1.1 选择模板 34
4.1.2 为新项目命名 35
4.1.3 项目名称中包含哪些内容 36
4.1.4 _MyCompanyName_是什么 37
4.1.5 打开一个或多个项目 38
4.1.6 重命名与移动项目 39
4.1.7 升级项目 40
4.2 项目设置 41
4.3 小结 42
第5章 源 43
5.1 引用 44
5.2 源条目类型 47
5.3 源条目属性 49
5.3.1 设置条目的路径 49
5.3.2 源条目类型与编码 50
5.3.3 修改多个条目的属性 50
5.4 组织源 51
5.4.1 默认引用 52
5.4.2 共享子目录 52
5.4.3 万物都是相关联的 53
5.4.4 外部情况 55
5.4.5 不良引用 57
5.4.6 最佳实践 58
5.5 创建新的源文件 58
5.6 创建空文件 61
5.7 添加现有条目 61
5.7.1 选择待添加的条目 62
5.7.2 添加框架 65
5.7.3 添加打开的文件 65
5.7.4 去除目标中不想要的文件 65
5.8 移除源条目 66
5.9 重新组织源 66
5.9.1 移动文件 67
5.9.2 重新排列目录 68
5.9.3 通过重新添加来重新组织 69
5.10 小结 70
第6章 编辑文本 71
6.1 窗口与窗格 72
6.1.1 编辑窗格 72
6.1.2 关闭与保存编辑器窗格 76
6.2 编辑器窗格 77
6.2.1 滚动条 78
6.2.2 分割窗格的编辑 79
6.2.3 边列 80
6.2.4 导航栏 81
6.3 显示选项 82
6.3.1 文本打包 82
6.3.2 不可见字符 82
6.3.3 全局显示选项 82
6.4 在文件中导航 85
6.4.1 鼠标移动 85
6.4.2 Emacs 86
6.4.3 滚动 87
6.4.4 跳转到函数、断点与书签处 87
6.4.5 跳转到其他文件 89
6.5 编辑 93
6.5.1 选择文本 93
6.5.2 删除文本 95
6.5.3 拖拽 95
6.5.4 字体与文本样式 96
6.5.5 保存文件 96
6.5.6 撤消 97
6.6 shell脚本 98
6.7 拼写检查 99
6.7.1 交互式检查 99
6.7.2 检查单个单词 100
6.7.3 在输入时检查 101
6.8 文件编码 101
6.9 文件本地化 103
6.9.1 创建文件的本地化版本 103
6.9.2 删除部分或全部本地化文件 104
6.10 打印 104
6.11 服务 105
6.12 小结 105
第7章 语法感知的编辑 107
7.1 Code Sense 107
7.1.1 启用Code Sense 108
7.1.2 重新索引项目 109
7.2 语法着色 109
7.2.1 定制语法着色 109
7.2.2 改变单个文件的语法着色 111
7.3 代码折叠 112
7.3.1 代码聚焦 113
7.3.2 折叠代码 113
7.3.3 展开代码 114
7.4 文本缩进 114
7.4.1 设置制表符宽度与缩进宽度 115
7.4.2 自动缩进 116
7.4.3 语法感知的缩进 116
7.4.4 重新缩进文本 120
7.5 代码完成 120
7.5.1 接受建议 121
7.5.2 使用完成列表 122
7.5.3 完成参数 123
7.5.4 文本宏 124
7.6 编辑符号名 126
7.7 小结 127
第8章 搜索 129
8.1 在单文件中搜索与替换文本 130
8.1.1 设置搜索选项 130
8.1.2 替换文本 131
8.2 在多文件间搜索与替换文本 132
8.2.1 在多文件间搜索模式 133
8.2.2 在多文件间替换文本 134
8.2.3 批量搜索选项 135
8.3 搜索模式 137
8.3.1 文本或字符串搜索 137
8.3.2 正则表达式搜索 138
8.3.3 符号搜索 145
8.4 搜索历史 147
8.4.1 最近的搜索模式与替换文本 147
8.4.2 最近搜索结果 148
8.4.3 全局搜索模式 148
8.5 搜索结果智能分组 148
8.6 搜索快捷方式 149
8.7 搜索列表 150
8.8 小结 152
第9章 类浏览器 153
9.1 类浏览器的导航 153
9.1.1 浏览类 154
9.1.2 获取类的文档 154
9.1.3 打开多个类浏览器 155
9.2 类浏览器选项集合 155
9.3 浏览器快捷方式 158
9.4 小结 158
第10章 重构 159
10.1 重构的流程 160
10.2 C与Objective-C的转换 161
10.2.1 重命名 161
10.2.2 析取 163
10.2.3 封装 165
10.2.4 创建父类 166
10.2.5 上移与下移 167
10.2.6 简化循环 168
10.3 将项目升级为Objective-C 2.0 170
10.4 小结 172
第11章 快照 173
11.1 制作快照 174
11.2 管理快照 175
11.2.1 为快照增加注释 175
11.2.2 查看快照 175
11.2.3 恢复改变 176
11.3 删除快照 177
11.4 小结 178
第12章 帮助和文档 179
12.1 帮助窗口 180
12.1.1 浏览文档 181
12.1.2 在帮助文档间导航 182
12.1.3 书签 183
12.1.4 外部链接 184
12.2 示例项目 185
12.3 搜索文档 186
12.3.1 搜索域 186
12.3.2 搜索控件栏 187
12.3.3 文本搜索 189
12.3.4 命令与Xcode帮助搜索 189
12.4 文档快捷方式 190
12.4.1 编辑快捷方式 190
12.4.2 快速帮助 191
12.4.3 文档快捷方式 192
12.5 man page 192
12.6 定制帮助 192
12.6.1 管理订阅 193
12.6.2 定制快速帮助 194
12.6.3 限制字体大小 194
12.7 Xcode社区 194
12.8 小结 195
第13章 Interface Builder 197
13.1 什么是Interface Builder 198
13.1.1 代码与Interface Builder 199
13.1.2 Interface Builder可完成的3件事 200
13.2 Interface Builder工作流 201
13.2.1 在Xcode工作流中编辑nib文档 201
13.2.2 模拟界面 202
13.2.3 在Interface Builder中构建项目 203
13.3 Interface Builder的界面 203
13.3.1 查看器面板 205
13.3.2 库面板 205
13.3.3 多个nib文档窗口 206
13.4 创建nib文档 206
13.4.1 选择模板 206
13.4.2 将新的nib文档添加到项目中 208
13.5 打开同类本地化文件 209
13.6 创建对象 209
13.7 拷贝、复制与删除对象 211
13.8 选择对象 211
13.8.1 nib文档窗口中的对象 211
13.8.2 对象顺序 212
13.8.3 视图对象 212
13.8.4 调整选择 215
13.9 配置对象 215
13.9.1 移动对象与改变对象大小 215
13.9.2 子视图 217
13.9.3 辅助线 218
13.9.4 查看器面板 220
13.10 连接对象 227
13.11 自定义类 233
13.11.1 创建自定义类的实例 234
13.11.2 将自定义插座变量添加到自定义类中 235
13.11.3 将自定义动作添加到自定义类中 236
13.11.4 在运行时初始化自定义对象 237
13.12 占位符对象 238
13.12.1 File's Owner 238
13.12.2 First Responder 239
13.12.3 其他占位符 239
13.13 界面分解 240
13.14 类的导入与导出 241
13.15 nib文档格式 241
13.15.1 文档格式 242
13.15.2 文档锁定 242
13.15.3 检查部署兼容性 242
13.15.4 保持向后兼容 243
13.16 定制Interface Builder 243
13.16.1 定制库面板 243
13.16.2 定制文档与兼容性检查 245
13.16.3 开发自定义的Interface Builder对象 245
13.17 小结 246
第14章 类建模 247
14.1 创建类模型 248
14.1.1 创建新的类模型文档 249
14.1.2 创建快速模型 251
14.2 类模型浏览器 252
14.3 类模型图 253
14.3.1 节点 254
14.3.2 工具 256
14.3.3 导航 256
14.4 编辑类模型 258
14.4.1 移动节点 258
14.4.2 页面布局 260
14.4.3 修改跟踪 260
14.4.4 添加注释 261
14.4.5 定制颜色和字体 262
14.4.6 隐藏类和成员 263
14.5 小结 266
第15章 数据建模 267
15.1 技术 268
15.2 术语 269
15.3 创建数据模型 270
15.3.1 创建实体 271
15.3.2 创建属性 272
15.3.3 添加提取的属性 274
15.3.4 添加提取请求 275
15.4 数据建模界面 275
15.4.1 数据模型浏览器 275
15.4.2 详细信息窗格视图 275
15.4.3 数据模型图 277
15.4.4 工具 278
15.4.5 复制实体和属性 278
15.4.6 谓词构建器 278
15.4.7 简单表达式 279
15.4.8 复合表达式 280
15.4.9 文本表达式 281
15.5 创建即时界面 281
15.6 迁移数据模式 282
15.6.1 创建新版本 283
15.6.2 添加轻量级的迁移提示 284
15.6.3 创建迁移映射 285
15.7 创建NSManagedObject子类 289
15.8 导出类方法 291
15.9 导入数据模型 291
15.10 小结 291
第16章 目标 293
16.1 目标与子项目 294
16.1.1 理想的单项目式项目 295
16.1.2 理想的多项目式项目 295
16.1.3 中间状态的项目 296
16.2 目标剖析 296
16.2.1 目标依赖 296
16.2.2 目标构建阶段 297
16.2.3 目标成员关系 297
16.2.4 目标构建设置 298
16.2.5 目标构建规则 298
16.2.6 目标产品 299
16.3 目标类型 299
16.3.1 本地目标 300
16.3.2 外部目标 300
16.3.3 聚合目标 301
16.3.4 Java和其他基于Jam的目标 301
16.4 创建目标 302
16.4.1 目标模板分组 303
16.4.2 复制目标 305
16.4.3 删除目标 306
16.5 构建阶段 306
16.5.1 构建阶段中的文件 307
16.5.2 构建阶段类型 308
16.6 构建规则 311
16.6.1 创建自定义构建规则 311
16.6.2 构建规则示例 314
16.7 依赖 315
16.7.1 添加目标依赖 316
16.7.2 添加项目依赖 316
16.7.3 目标依赖的策略 317
16.8 构建设置 318
16.9 基于JAM的目标编辑器 319
16.10 属性 320
16.11 产品 321
16.12 可执行文件 322
16.13 小结 323
第17章 构建项目 325
17.1 开始和停止构建 326
17.1.1 选择活动的目标和构建配置 327
17.1.2 控制单独条目的构建 329
17.1.3 构建不活动的目标 330
17.2 干净的构建 330
17.3 部分构建 331
17.4 构建窗口 332
17.4.1 构建脚本条目 333
17.4.2 脚本条目文本 334
17.4.3 在错误和警告间导航 335
17.4.4 消息气泡 336
17.5 构建首选项 337
17.5.1 建立公共的构建位置 337
17.5.2 自动化构建窗口的行为 338
17.5.3 其他的全局构建选项 338
17.5.4 处理未保存的文件 338
17.6 构建位置 339
17.7 构建位置策略 342
17.8 构建设置 343
17.8.1 构建设置的范围 344
17.8.2 构建设置求值 345
17.8.3 构建设置值的替换 346
17.8.4 条件构建设置 348
17.8.5 可变构建设置 349
17.9 构建配置 349
17.10 编辑构建设置 351
17.10.1 过滤构建设置 351
17.10.2 查看名称和定义 352
17.10.3 透视的构建脚本 353
17.10.4 修改构建设置值 353
17.10.5 创建条件构建设置 355
17.10.6 创建自定义的构建设置 355
17.10.7 删除构建设置 356
17.10.8 切换构建配置 356
17.11 编辑构建配置 356
17.12 配置设置文件 357
17.12.1 添加配置设置文件 358
17.12.2 使用配置设置文件 359
17.13 移动构建设置 359
17.14 环境设置 359
17.15 定制构建 361
17.15.1 基于每个文件的编译器标志 361
17.15.2 交叉开发 362
17.15.3 构建通用二进制文件 365
17.15.4 选择的构建设置详解 366
17.16 xcodebuild工具 373
17.16.1 使用xcodebuild工具 374
17.16.2 兼容性 375
17.17 Xcode Automator动作 376
17.18 分布式构建 376
17.18.1 与其他开发人员共享系统 377
17.18.2 将构建分发到工作组 378
17.19 小结 379
第18章 调试 381
18.1 运行应用程序 382
18.1.1 监控进程 382
18.1.2 停止可执行文件的执行 383
18.1.3 选择活动的可执行文件 383
18.2 随时随地进行调试 384
18.3 为调试构建项目 386
18.4 调试可执行文件 388
18.4.1 幕后的处理 389
18.4.2 关于调试器 389
18.5 附加到运行的可执行文件上 390
18.6 编辑器中的调试 391
18.6.1 编辑断点 392
18.6.2 控制执行 392
18.6.3 查看变量 394
18.7 调试器窗口 395
18.7.1 线程窗格 396
18.7.2 列表或编辑器窗格 397
18.7.3 变量窗格 398
18.8 控制调试器 401
18.8.1 Pause和Continue命令 402
18.8.2 Step Over和Step Into命令 402
18.8.3 Step Out命令 403
18.8.4 Step Into Instruction和Step Over Instruction命令 403
18.8.5 continue to here命令 404
18.9 迷你调试器 404
18.10 断点 405
18.10.1 断点类型 406
18.10.2 断点窗口 406
18.10.3 编辑器窗格中的断点详细信息 407
18.10.4 删除断点 408
18.10.5 启用和禁用断点 408
18.10.6 创建符号断点 409
18.10.7 有条件的断点 410
18.10.8 断点忽略次数 412
18.10.9 断点动作 412
18.10.10 断点继续 417
18.10.11 导入与导出断点 417
18.10.12 断点模板 418
18.11 查看数据 418
18.11.1 标量格式 419
18.11.2 在另一个窗口中查看数据 419
18.11.3 查看全局变量 420
18.11.4 表达式 421
18.12 数据格式化器 422
18.12.1 创建自定义的数据格式化器 422
18.12.2 解决数据格式化器的问题 425
18.12.3 突破数据格式化器字符串的限制 427
18.12.4 对象说明 427
18.13 观察点 427
18.14 修改数据和代码 428
18.14.1 魔力修复 428
18.14.2 魔力修复的局限 430
18.15 调试器控制台 430
18.16 共享库 431
18.17 自定义可执行文件 432
18.17.1 常规设置 433
18.17.2 参数与环境 434
18.17.3 调试 434
18.17.4 选择可执行文件 436
18.18 调试器首选项 436
18.19 远程调试 437
18.20 调试助手 441
18.20.1 捕获抛出的异常 441
18.20.2 遇到Debugger()与DebugStr()时停止 441
18.20.3 Guard Malloc 441
18.20.4 调试变量 442
18.21 小结 444
第19章 性能分析 445
19.1 关于性能的基本知识 446
19.1.1 假如没有崩溃 446
19.1.2 接受你的无知 446
19.1.3 系统地改进性能 447
19.2 分析前的准备 447
19.3 Shark 448
19.3.1 剖析视图 450
19.3.2 代码视图 452
19.3.3 栈视图 453
19.3.4 细化分析 454
19.3.5 保存并比较Shark会话 456
19.3.6 合并Shark会话 456
19.3.7 使用Shark分析远程应用程序和iPhone应用程序 457
19.3.8 Shark进阶 457
19.4 Instruments 457
19.4.1 术语 458
19.4.2 记录跟踪数据 458
19.4.3 分析跟踪数据 461
19.4.4 使用播放头查看并导航 464
19.4.5 使用标志 465
19.4.6 设定查看范围 465
19.4.7 定制Instruments 466
19.4.8 保存和导出工具数据 467
19.4.9 创建工具模板 467
19.4.10 独立使用Instruments 468
19.4.11 典型场景 471
19.5 小结 478
第20章 单元测试 479
20.1 单元测试的运作方式 480
20.2 单元测试入门 481
20.2.1 独立的单元测试 481
20.2.2 依赖的单元测试 482
20.2.3 iPhone单元测试 482
20.3 添加单元测试目标 483
20.3.1 单元测试目标依赖 484
20.3.2 配置独立/逻辑单元测试 485
20.3.3 配置依赖的Mac OS X单元测试 485
20.3.4 配置iPhone应用测试 487
20.4 创建单元测试 488
20.4.1 公共的测试初始化 489
20.4.2 Objective-C测试 491
20.4.3 Objective-C测试宏 493
20.4.4 C++测试 494
20.5 单元测试的调试 499
20.5.1 iPhone应用测试的调试 500
20.5.2 依赖的Mac OS X单元测试的调试 500
20.5.3 独立单元测试的调试 502
20.6 小结 502
第21章 共享源 503
21.1 通过Xcode共享 504
21.1.1 源树的基本知识 504
21.1.2 源控制的基本知识 504
21.2 源树 505
21.2.1 定义源树 505
21.2.2 源树引用 506
21.3 源控制 507
21.3.1 使用源控制 508
21.3.2 定义仓库 508
21.3.3 源控制选项 511
21.3.4 SSH证书 513
21.3.5 创建Subversion仓库 513
21.3.6 过滤噪声 513
21.3.7 浏览仓库 516
21.3.8 将项目添加到源控制中 517
21.3.9 检出项目 519
21.3.10 导出项目 520
21.3.11 配置项目使用源控制 520
21.3.12 项目根 521
21.3.13 源控制界面 522
21.3.14 SCM智能分组和窗口 523
21.3.15 提交变更 525
21.3.16 丢弃变更 526
21.3.17 将文件添加到源控制中 526
21.3.18 删除源控制下的文件 528
21.3.19 重命名源控制下的文件 528
21.3.20 更新文件 529
21.3.21 比较修订版本 530
21.3.22 合并变更 531
21.3.23 查看注释 532
21.3.24 解决冲突 533
21.3.25 离线 534
21.3.26 源控制与项目文档 534
21.4 源控制与快照 535
21.5 小结 535
第22章 使用组织器 537
22.1 PROJECTS & SOURCES分组 538
22.1.1 向组织器中添加条目 538
22.1.2 接受外来项目 540
22.1.3 搜索组织器文件夹 540
22.1.4 制作快照 540
22.2 使用组织器动作 541
22.2.1 自动创建的动作 541
22.2.2 创建自定义动作 541
22.2.3 保存并共享动作 546
22.2.4 关于动作的一些想法 547
22.3 DEVICES分组 547
22.3.1 添加与移除设备 547
22.3.2 安装预配置文件 548
22.3.3 管理开发应用程序 550
22.3.4 下载应用程序数据 550
22.3.5 安装备用操作系统 550
22.3.6 查看崩溃日志 551
22.3.7 监控设备的控制台 552
22.3.8 捕获屏幕快照与默认图像 552
22.4 IPHONE DEVELOPMENT分组 554
22.4.1 Crash Logs分组 554
22.4.2 Provisioning Profiles分组 554
22.4.3 Screenshots分组 555
22.4.4 Software Images分组 555
22.5 小结 555
第23章 定制Xcode 557
23.1 Xcode首选项 558
23.2 键绑定 559
23.2.1 菜单键绑定 560
23.2.2 文本键绑定 561
23.3 使用外部编辑器 563
23.3.1 使用备用编辑器 563
23.3.2 指定默认编辑器 564
23.3.3 使用外部编辑器 564
23.3.4 Xcode支持的外部编辑器 565
23.4 文本宏 566
23.4.1 创建文本宏定义 566
23.4.2 Xcode支持的文本宏定制方式 570
23.5 高级首选项 571
23.5.1 项目与文件 573
23.5.2 编辑 573
23.5.3 Functions菜单 575
23.5.4 构建 575
23.5.5 分布式构建 576
23.5.6 调试 577
23.5.7 快照 577
23.5.8 源代码管理 578
23.5.9 文档 578
23.6 模板 578
23.6.1 文件模板 579
23.6.2 模板宏 580
23.6.3 项目模板 581
23.6.4 目标模板 584
23.7 用户脚本 586
23.7.1 StartupScript 586
23.7.2 创建用户脚本 586
23.7.3 用户脚本选项 587
23.7.4 用户脚本剖析 588
23.7.5 用户脚本变量 589
23.7.6 脚本辅助工具 591
23.8 AppleScript 592
23.9 重置Xcode 593
23.10 小结 594