第1章 初识iOS SDK 1
1.1 安装Xcode 1
1.2 关于iOS SDK 2
1.2.1 免费获取的开发者计划 3
1.2.2 iOS开发者计划标准版(个人和公司) 4
1.2.3 企业开发者计划 4
1.2.4 大学开发者计划 5
1.2.5 注册 5
1.2.6 iTunes U和在线课程 5
1.2.7 iOS SDK工具 5
1.3 测试应用程序:模拟器和设备 7
1.3.1 模拟器的局限 8
1.3.2 接线 9
1.3.3 对iOS设备的考量 10
1.4 理解设备型号间的差异 14
1.4.1 屏幕尺寸 14
1.4.2 摄像头 14
1.4.3 音频 15
1.4.4 电话通信 15
1.4.5 Core Location和Core Motion之间的差异 15
1.4.6 摇晃支持和接近 16
1.4.7 处理器速度 16
1.4.8 OpenGL ES 17
1.4.9 iOS 17
1.5 小结 18
第2章 Objective-C新手训练营 19
2.1 使用模板创建Hello World应用程序 19
2.1.1 创建Hello World项目 19
2.1.2 Xcode项目界面快速导航 23
2.1.3 添加Hello World标签 24
2.2 Objective-C新兵训练营 26
2.2.1 Objective-C编程语言 27
2.2.2 类和对象 30
2.3 CarValet应用程序:实现Car类 35
2.3.1 实现Car方法 39
2.3.2 属性 43
2.3.3 创建并打印Car对象 45
2.4 属性:另外两个特性 46
2.5 子类化和继承:挑战一下 49
2.6 小结 52
2.7 挑战题 53
第3章 故事板介绍 55
3.1 故事板的基础知识 55
3.2 场景1:构建“Add/View”场景 57
3.2.1 在“Add/View”场景中添加可视化元素 57
3.2.2 添加“Add/View”初始化行为 61
3.2.3 加入显示汽车行为 69
3.2.4 添加Previous和Next汽车按钮 72
3.3 场景2:添加一个编辑器 75
3.3.1 添加Editor场景的可视化元素 77
3.3.2 添加Editor场景中的行为 78
3.3.3 将一切都关联起来 82
3.3.4 为何不用segue返回? 87
3.4 改进故事板Ⅰ 87
3.5 改进故事板Ⅱ 91
3.6 小结 94
3.7 挑战题 94
第4章 自动布局 95
4.1 自动布局的基础知识 95
4.2 完美纵向显示 106
4.2.1 以约束的方式思考 106
4.2.2 完整的规定 107
4.3 添加/查看汽车:设计和实现约束 108
4.3.1 设计与实现添加汽车约束 118
4.3.2 编辑汽车场景:初始的样子 123
4.4 添加横向屏幕支持 123
4.5 小结 142
4.6 挑战题 143
第5章 本地化 145
5.1 本地化的基础知识 145
5.1.1 重定向 146
5.1.2 格式 148
5.2 为本地化而准备应用程序 150
5.3 德语国际化 162
5.3.1 添加德语区域 162
5.3.2 更改设备语言 163
5.3.3 更新德语版的Localizable.strings 164
5.3.4 修改标签约束 166
5.3.5 格式化和读取数字 169
5.4 从右至左:阿拉伯语国际化 170
5.4.1 添加阿拉伯语字符串 170
5.4.2 让日期和数字能够工作 173
5.4.3 文本对齐 175
5.5 小结 176
5.6 挑战题 177
第6章 滚动 179
6.1 滚动的基础知识 179
6.2 弹跳滚动 180
6.3 处理键盘 183
6.3.1 添加滚动视图 183
6.3.2 调整键盘大小 186
6.3.3 添加调整大小 190
6.4 在内容中滚动 190
6.4.1 填充滚动视图 191
6.4.2 添加分页 193
6.4.3 添加缩放 194
6.4.4 旋转 197
6.4.5 这是什么车? 198
6.5 小结 198
6.6 挑战题 199
第7章 导航控制器Ⅰ:层次结构和标签 201
7.1 导航控制器 201
7.1.1 导航控制器类 203
7.1.2 基于消息的导航 209
7.1.3 少许颜色 210
7.2 标签栏控制器 212
7.2.1 标签栏的工作原理 213
7.2.2 CarValet应用程序:添加标签栏 214
7.2.3 CarValet移动Info 216
7.3 小结 217
7.4 挑战题 218
第8章 表视图Ⅰ:基础知识 219
8.1 表视图介绍 219
8.2 阶段Ⅰ:替换Add/View场景 226
8.2.1 添加汽车查看单元格 228
8.2.2 添加汽车 229
8.2.3 删除汽车 230
8.3 阶段Ⅱ:添加Edit屏幕层次结构 233
8.3.1 添加查看汽车场景 233
8.3.2 用数据填充查看汽车场景 234
8.3.3 编辑数据 236
8.3.4 编辑年份 245
8.4 小结 251
8.5 挑战题 251
第9章 Core Data介绍 253
9.1 介绍Core Data 254
9.2 将CarValet应用程序迁移到Core Data 255
9.2.1 添加CDCar模型 256
9.2.2 添加Core Data样板代码 258
9.2.3 转换CarTableView-Controller 259
9.3 更加简单的表视图:NSFetchedResultsController 265
9.3.1 第1部分:集成NSFetched-ResultsController 265
9.3.2 第2部分:实现NSFetched-ResultsControllerDelegate 268
9.4 小结 271
9.5 挑战题 271
第10章 表视图Ⅱ:高级话题 273
10.1 自定义表视图单元格 273
10.2 表格段和排序 276
10.2.1 表格段的表头 277
10.2.2 允许表格段的分组方式发生变化 279
10.3 添加索引 283
10.4 搜索表格 286
10.5 小结 294
10.6 挑战题 295
第11章 导航控制器Ⅱ:拆分视图和iPad 297
11.1 拆分视图控制器 297
11.2 添加拆分视图控制器 299
11.2.1 添加拆分视图控制器 301
11.2.2 添加各部分之间的导航 304
11.3 添加About视图 306
11.3.1 创建MainMenuView-Controller 306
11.3.2 美化菜单图片 308
11.4 在纵向屏幕中访问菜单 310
11.5 添加汽车图片 318
11.6 新增Cars 320
11.6.1 使汽车表格适应iPad 322
11.6.2 汽车详情控制器 324
11.6.3 汽车详情控制器:iPad专属 326
11.7 小结 340
11.8 挑战题 341
第12章 触摸基础 343
12.1 手势识别基础 343
12.2 在汽车之间轻扫移动 344
12.2.1 在汽车之间移动 344
12.2.2 调用nextOrPrevious-Car: 347
12.2.3 添加动作选择器 348
12.2.4 添加轻扫手势 350
12.2.5 阻止识别器工作 351
12.3 自定义识别器 352
12.3.1 识别器的状态 352
12.3.2 指定的识别器消息 354
12.4 iPad返回Home页 354
12.4.1 创建返回手势识别器 355
12.4.2 将手势识别器添加到当前的详情视图 357
12.4.3 创建并响应手势识别器 358
12.5 再添加一个手势 359
12.5.1 拖动手势识别器 359
12.5.2 添加支持拖动的出租车视图 360
12.6 小结 361
12.7 挑战题 361
第13章 Block介绍 363
13.1 Block基础 363
13.1.1 声明Block 363
13.1.2 使用Block 364
13.1.3 编写Block 364
13.2 变量的作用域 369
13.3 替换协议 371
13.3.1 步骤(1):修改ViewCarTable-ViewController 371
13.3.2 步骤(2):更新CarTable-ViewController 372
13.3.3 步骤(3):修改CarDetail-ViewController 373
13.3.4 步骤(4):更新MainMenu-ViewController 373
13.4 小结 374
13.5 挑战题 374
第14章 Instruments和调试 375
14.1 Instruments 375
14.1.1 模板和仪器 377
14.1.2 使用Time Profiler的示例 378
14.1.3 关于仪器的最后—句话 382
14.2 调试器 383
14.2.1 调试仪表:微型Instruments 384
14.2.2 断点、动作、代码 386
14.3 Bug搜寻:Instruments和调试器 387
14.3.1 从Zombies开始 388
14.3.2 转移到调试器 390
14.4 小结 391
14.5 挑战题 392
第15章 部署应用程序 393
15.1 证书、概要和应用程序 393
15.1.1 生成开发证书和profile 395
15.1.2 应用程序ID和provisioring 397
15.2 预发行 403
15.2.1 bug报告 403
15.2.2 度量 404
15.2.3 质量保证测试 405
15.2.4 市场营销 408
15.3 上传和发行 409
15.3.1 软件详情 410
15.3.2 上传到App Store 414
15.3.3 在发布之后需要注意的事情 418
15.4 下一步去哪儿 419
15.4.1 网页 420
15.4.2 开发者小组与会议 420
15.4.3 其他社交媒体 421
15.5 小结 422
15.6 挑战题 422