iOS开发指南:从Hello World到App Store上架(第4版)

iOS开发指南:从Hello World到App Store上架(第4版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2016-06
版次: 4
ISBN: 9787115423184
定价: 119.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 802页
字数: 1646千字
正文语种: 简体中文
丛书: 图灵原创
30人买过
  • 本书是iOS开发杰出指南,分5部分讲解如何从零起步编写并上线iOS应用。首部分介绍iOS开发基础知识,包括界面构建技术、基本控件、协议、表视图、屏幕适配、导航、分屏多任务等。第二部分介绍设计与架构的相关知识,包括设计模式、分层模式、本地数据持久化等。第三部分为进阶篇,包括设置与配置、本地化、Contacts与ContactsUI框架、数据交换格式、Web Service、定位服务、苹果地图等内容。第四部分介绍测试、调试和优化等相关知识。第五部分为实战篇,涵盖代码版本管理、项目依赖管理、App Store发布流程,以及两个真实iOS应用的分析设计、编程、测试与分布过程。本书同时提供Swift和Objective-C两版代码。

    本书适合所有iOS开发人员学习参考。 国内杰出iOS和Cocos技术作家、iOS技术顾问、Cocos有价值专家(CVP)、智捷课堂首席培训专家、51CTO社区iOS技术顾问。他精通iOS、Android和Windows及HTML5等移动开发技术,擅长应用和游戏类项目开发,曾先后主持开发:大型网络游戏《神农诀》的iOS和Android客户端,国家农产品追溯系统的iPad客户端,酒店预订系统的iOS客户端,金融系统的iOS、Windows及Android客户端。与此同时,他长期为中国移动研究院、方正科技、大唐电信、中国石油、工商银行、南方航空、惠普、东软集团、NTT等企事业单位提供技术咨询及员工培训。 第一部分 基 础 篇
    第1章 开篇综述 2
    1.1 iOS概述 2
    1.1.1 iOS介绍 2
    1.1.2 iOS 9新特性 2
    1.2 开发环境及开发工具 3
    1.3 本书约定 4
    1.3.1 案例代码约定 4
    1.3.2 图示的约定 5
    1.3.3 方法命名约定 6
    1.3.4 构造函数命名约定 7
    1.3.5 错误处理约定 8
    第2章 第一个iOS应用程序 10
    2.1 创建HelloWorld工程 10
    2.1.1 创建工程 10
    2.1.2 Xcode中的iOS工程模板 14
    2.1.3 应用剖析 15
    2.2 应用生命周期 17
    2.2.1 非运行状态——应用启动场景 19
    2.2.2 点击Home键——应用退出场景 20
    2.2.3 挂起重新运行场景 22
    2.2.4 内存清除:应用终止场景 23
    2.3 设置产品属性 23
    2.3.1 Xcode中的工程和目标 23
    2.3.2 设置常用的产品属性 26
    2.4 iOS API简介 27
    2.4.1 API概述 27
    2.4.2 如何使用API帮助 29
    2.5 小结 32
    第3章 Cocoa Touch框架与构建应用界面 33
    3.1 视图控制器 33
    3.1.1 视图控制器种类 33
    3.1.2 视图的生命周期 33
    3.2 视图 35
    3.2.1 UIView继承层次结构 35
    3.2.2 视图分类 37
    3.2.3 应用界面构建层次 37
    3.3 使用故事板构建界面 38
    3.3.1 什么是故事板 39
    3.3.2 场景和过渡 41
    3.4 使用XIB文件构建界面 42
    3.4.1 重构HelloWorld 42
    3.4.2 XIB与故事板比较 45
    3.5 使用纯代码构建界面 45
    3.5.1 重构HelloWorld 46
    3.5.2 视图的几个重要属性 47
    3.6 3种构建界面技术讨论 49
    3.6.1 所见即所得 49
    3.6.2 原型驱动开发 49
    3.6.3 团队协同开发 49
    3.7 小结 50
    第4章 UIView与视图 51
    4.1 标签与按钮 51
    4.1.1 Interface Builder实现 51
    4.1.2 代码实现 55
    4.2 事件处理 56
    4.2.1 Interface Builder实现 56
    4.2.2 代码实现 59
    4.3 访问视图 60
    4.3.1 Interface Builder实现 60
    4.3.2 代码实现 62
    4.4 TextField和TextView 63
    4.4.1 Interface Builder实现 64
    4.4.2 代码实现 65
    4.4.3 键盘的打开和关闭 67
    4.4.4 关闭和打开键盘的通知 68
    4.4.5 键盘的种类 69
    4.5 开关控件、分段控件和滑块控件 70
    4.5.1 开关控件 71
    4.5.2 分段控件 72
    4.5.3 滑块控件 74
    4.6 Web视图:WKWebView类 76
    4.7 警告框和操作表 80
    4.7.1 UIAlertController实现警告框 81
    4.7.2 UIAlertController实现操作表 83
    4.8 等待相关的控件与进度条 84
    4.8.1 活动指示器ActivityIndicatorView 85
    4.8.2 进度条ProgressView 87
    4.9 工具栏和导航栏 90
    4.9.1 工具栏 90
    4.9.2 导航栏 94
    4.10 小结 98
    第5章 委托协议、数据源协议与高级视图 99
    5.1 视图中的委托协议和数据源协议 99
    5.2 选择器 99
    5.2.1 日期选择器 99
    5.2.2 普通选择器 104
    5.2.3 数据源协议与委托协议 109
    5.3 集合视图 111
    5.4 实例:Interface Builder实现奥运会比赛
    项目 112
    5.4.1 添加集合视图 113
    5.4.2 添加集合视图单元格 114
    5.4.3 数据源协议与委托协议 118
    5.5 实例:代码实现奥运会比赛项目 120
    5.5.1 添加集合视图 120
    5.5.2 自定义集合视图单元格 122
    5.6 小结 123
    第6章 表视图 124
    6.1 概述 124
    6.1.1 表视图的组成 124
    6.1.2 表视图的相关类 125
    6.1.3 表视图分类 125
    6.1.4 单元格的组成和样式 127
    6.1.5 数据源协议与委托协议 129
    6.2 简单表视图 129
    6.2.1 实现协议方法 130
    6.2.2 UIViewController根视图控制器 130
    6.2.3 UITableViewController根视图
    控制器 137
    6.3 自定义表视图单元格 140
    6.3.1 Interface Builder实现 141
    6.3.2 代码实现 145
    6.4 添加搜索栏 146
    6.5 分节表视图 150
    6.5.1 添加索引 150
    6.5.2 分组 153
    6.6 静态表与界面布局 154
    6.7 插入和删除单元格 160
    6.7.1 Interface Builder实现 162
    6.7.2 代码实现 167
    6.8 移动单元格 169
    6.9 表视图UI设计模式 171
    6.9.1 分页模式 171
    6.9.2 下拉刷新模式 171
    6.9.3 下拉刷新控件 172
    6.10 小结 174
    第7章 界面布局与屏幕适配 175
    7.1 界面布局概述 175
    7.2 iOS界面布局设计模式 176
    7.2.1 表单布局模式 176
    7.2.2 列表布局模式 176
    7.2.3 网格布局模式 177
    7.3 传统布局技术 177
    7.4 Auto Layout布局技术 179
    7.4.1 Interface Builder中管理Auto Layout
    约束 179
    7.4.2 实例:Auto Layout布局 180
    7.5 iOS 9堆视图StackView 185
    7.5.1 堆视图与布局 185
    7.5.2 实例:堆视图布局 186
    7.6 iOS 屏幕的多样性 191
    7.6.1 iOS屏幕介绍 191
    7.6.2 iOS的3种分辨率 192
    7.6.3 获得iOS设备屏幕信息 193
    7.7 Size Class与iOS多屏幕适配 194
    7.7.1 Interface Builder中使用Size Class 195
    7.7.2 Size Class的九宫格 195
    7.7.3 实例:使用Size Class 196
    7.8 资源目录与图片资源适配 201
    7.9 小结 204
    第8章 视图控制器与导航模式 205
    8.1 概述 205
    8.1.1 视图控制器的种类 205
    8.1.2 导航模式 205
    8.2 模态视图 207
    8.2.1 Interface Builder实现 208
    8.2.2 代码实现 214
    8.3 平铺导航 215
    8.3.1 应用场景 215
    8.3.2 基于分屏导航的实现 217
    8.3.3 基于电子书导航的实现 223
    8.4 标签导航 228
    8.4.1 应用场景 229
    8.4.2 Interface Builder实现 230
    8.4.3 代码实现 234
    8.5 树形结构导航 235
    8.5.1 应用场景 235
    8.5.2 Interface Builder实现 236
    8.5.3 代码实现 244
    8.6 组合使用导航模式 245
    8.6.1 应用场景 246
    8.6.2 Interface Builder实现 246
    8.6.3 代码实现 254
    8.7 小结 257
    第9章 iPad应用开发 258
    9.1 iPad与iPhone应用开发的差异 258
    9.1.1 应用场景不同 258
    9.1.2 导航模式不同 258
    9.1.3 API不同 258
    9.2 iPad树形结构导航 259
    9.2.1 邮件应用中的树形结构导航 259
    9.2.2 Master-Detail应用程序模板 260
    9.2.3 Interface Builder实现SplitViewSample案例 266
    9.2.4 代码实现SplitViewSample案例 270
    9.3 iPad模态视图 273
    9.3.1 邮件应用中的模态导航 273
    9.3.2 iPad模态导航相关API 275
    9.3.3 Interface Builder实现ModalView-
    Sample案例 277
    9.3.4 代码实现ModalViewSample案例 281
    9.4 Popover(浮动层)视图 284
    9.4.1 Popover相关API 284
    9.4.2 PopoverViewSample案例 285
    9.5 iOS 9分屏多任务 289
    9.5.1 Slide Over多任务 289
    9.5.2 分屏视图多任务 290
    9.5.3 画中画多任务 293
    9.6 iPad分屏多任务适配开发 293
    9.6.1 分屏多任务前提条件 293
    9.6.2 分屏多任务适配 294
    9.7 小结 295
    第二部分 设计与架构篇
    第10章 iOS常用设计模式 298
    10.1 单例模式 298
    10.1.1 问题提出 298
    10.1.2 Objective-C实现原理 298
    10.1.3 Swift实现原理 299
    10.1.4 应用案例 300
    10.2 委托模式 301
    10.2.1 问题提出 301
    10.2.2 实现原理 303
    10.2.3 应用案例 306
    10.3 观察者模式 309
    10.3.1 问题提出 309
    10.3.2 实现原理 310
    10.3.3 通知机制和KVO机制 311
    10.4 再谈MVC模式 317
    10.4.1 MVC模式概述 317
    10.4.2 Cocoa Touch中的MVC模式 318
    10.5 小结 320
    第11章 iOS分层架构设计 321
    11.1 低耦合企业级系统架构设计 321
    11.2 iOS分层架构设计 322
    11.2.1 工程与工作空间 322
    11.2.2 静态链接库 323
    11.2.3 框架 323
    11.2.4 16种分层模式 324
    11.3 实例:MyNotes应用 325
    11.4 基于同一工程的分层 327
    11.4.1 采用纯Swift语言实现:PSSS
    模式 327
    11.4.2 采用纯Objective-C语言实现:
    POOO模式 330
    11.4.3 采用Swift调用Objective-C的
    混合搭配实现:PSOO模式 334
    11.5 基于同一工作空间静态链接库实现的WLSOO
    模式 335
    11.5.1 使用工作空间 335
    11.5.2 添加数据持久层工程 336
    11.5.3 建立业务逻辑层与数据持久层依赖
    关系 337
    11.5.4 建立表示层与业务逻辑层依赖
    关系 339
    11.6 基于同一工作空间框架实现的WFSSS
    模式 339
    11.6.1 创建框架工程 340
    11.6.2 建立依赖关系 341
    11.6.3 代码重构 342
    11.7 基于同一工作空间框架实现的WFOOO
    模式 344
    11.7.1 设置Public头文件 344
    11.7.2 设置保护伞头文件 345
    11.7.3 代码重构 345
    11.8 基于同一工作空间框架实现的WFSOO
    模式 346
    11.8.1 设置Public头文件 346
    11.8.2 设置保护伞头文件 346
    11.8.3 建立表示层与业务逻辑层依赖
    关系 346
    11.8.4 代码重构 346
    11.9 基于同一工作空间框架实现的WFOSS
    模式 346
    11.9.1 设置Public头文件 346
    11.9.2 设置Swift代码嵌入应用 347
    11.9.3 代码重构 347
    11.10 基于同一个工程不同目标框架实现的
    TFSOO模式 348
    11.10.1 使用目标 348
    11.10.2 添加框架目标 348
    11.11 小结 349
    第12章 数据持久化 350
    12.1 概述 350
    12.1.1 沙箱目录 350
    12.1.2 持久化方式 351
    12.2 属性列表 351
    12.3 对象归档 357
    12.4 使用SQLite数据库 361
    12.4.1 SQLite数据类型 361
    12.4.2 配置Objective-C框架工程环境 362
    12.4.3 配置Swift框架工程环境 362
    12.4.4 创建数据库 364
    12.4.5 查询数据 365
    12.4.6 修改数据 368
    12.5 Core Data 370
    12.5.1 ORM 370
    12.5.2 Core Data栈 371
    12.5.3 建模和生成实体 374
    12.5.4 采用Core Data分层架构设计 380
    12.5.5 查询数据 382
    12.5.6 修改数据 384
    12.6 小结 385
    第三部分 进 阶 篇
    第13章 应用程序设置 388
    13.1 概述 388
    13.1.1 设置 388
    13.1.2 配置 389
    13.2 应用程序设置包 390
    13.3 设置项目种类 392
    13.3.1 文本字段 395
    13.3.2 开关 398
    13.3.3 滑块 399
    13.3.4 值列表 400
    13.3.5 子界面 401
    13.4 读取设置 403
    13.5 小结 405
    第14章 本地化 406
    14.1 概述 406
    14.1.1 需要本地化的内容 406
    14.1.2 本地化目录结构 409
    14.2 文本信息本地化 410
    14.2.1 系统按钮和信息本地化 410
    14.2.2 应用名称本地化 411
    14.2.3 程序代码输出的静态文本本地化 413
    14.2.4 使用genstring工具 414
    14.3 故事板和XIB文件本地化 415
    14.3.1 使用Base Internationalization技术 415
    14.3.2 Auto Layout与本地化 417
    14.4 资源文件本地化 419
    14.4.1 图片资源文件本地化 419
    14.4.2 声音资源文件本地化 420
    14.5 小结 421
    第15章 iOS 9中访问通讯录 422
    15.1 通讯录的安全访问设置 422
    15.2 使用Contacts框架读取联系人信息 423
    15.2.1 查询联系人 423
    15.2.2 读取单值属性 426
    15.2.3 读取多值属性 428
    15.2.4 读取图片属性 430
    15.3 使用Contacts框架写入联系人信息 430
    15.3.1 创建联系人 431
    15.3.2 修改联系人 433
    15.3.3 删除联系人 434
    15.4 使用系统提供界面 435
    15.4.1 选择联系人 435
    15.4.2 显示和修改联系人 438
    15.4.3 创建联系人 441
    15.5 小结 444
    第16章 数据交换格式 445
    16.1 XML数据交换格式 446
    16.1.1 XML文档结构 446
    16.1.2 解析XML文档 447
    16.2 实例:MyNotes应用XML 448
    16.2.1 使用NSXML解析 450
    16.2.2 使用TBXML解析 453
    16.3 JSON数据交换格式 459
    16.3.1 JSON文档结构 459
    16.3.2 JSON数据编码/解码 460
    16.4 实例:MyNotes应用JSON解码 461
    16.5 小结 462
    第17章 REST Web Service 463
    17.1 概述 463
    17.2 使用NSURLSession 464
    17.2.1 NSURLSession API 464
    17.2.2 简单会话实现GET请求 465
    17.2.3 默认会话实现GET请求 468
    17.2.4 实现POST请求 469
    17.2.5 下载数据 470
    17.3 实例:使用NSURLSession重构MyNotes
    案例 473
    17.3.1 插入方法调用 473
    17.3.2 修改方法调用 474
    17.3.3 删除方法调用 475
    17.4 使用AFNetworking框架 477
    17.4.1 比较ASIHTTPRequest、
    AFNetworking和MKNetworkKit 477
    17.4.2 安装和配置AFNetworking框架 478
    17.4.3 实现GET请求 479
    17.4.4 实现POST请求 480
    17.4.5 下载数据 481
    17.4.6 上传数据 482
    17.5 使用为Swift设计的网络框架:
    Alamofire 484
    17.5.1 安装和配置Alamofire框架 484
    17.5.2 实现GET请求 485
    17.5.3 实现POST请求 486
    17.5.4 下载数据 487
    17.5.5 上传数据 488
    17.6 反馈网络信息改善用户体验 489
    17.6.1 使用下拉刷新控件改善用户体验 489
    17.6.2 使用活动指示器控件 492
    17.6.3 使用网络活动指示器 494
    17.7 小结 494
    第18章 定位服务 495
    18.1 定位服务概述 495
    18.1.1 定位服务编程 496
    18.1.2 测试定位服务 499
    18.2 管理定位服务 503
    18.2.1 应用启动与停止下的定位服务
    管理 504
    18.2.2 视图切换下的定位服务管理 504
    18.2.3 应用前后台切换下的定位服务
    管理 505
    18.2.4 设置自动暂停位置服务 507
    18.2.5 iOS 9后台位置服务管理 507
    18.3 地理信息编码与反编码 508
    18.3.1 地理信息反编码 508
    18.3.2 实例:地理信息反编码 509
    18.3.3 地理信息编码查询 510
    18.3.4 实例:地理信息编码查询 510
    18.4 微定位技术iBeacon 512
    18.4.1 微定位与地理围栏 512
    18.4.2 iBeacon技术概述 512
    18.4.3 实例:使用iBeacon技术实现微
    定位 513
    18.5 小结 519
    第19章 苹果地图应用 520
    19.1 使用iOS苹果地图 520
    19.1.1 显示地图 520
    19.1.2 显示3D地图 524
    19.2 添加标注 525
    19.2.1 实现查询 526
    19.2.2 在地图上添加标注 528
    19.3 跟踪用户位置变化 529
    19.4 使用程序外地图 530
    19.5 小结 533
    第四部分 测试、调试和优化篇
    第20章 找出程序中的bug——调试 536
    20.1 Xcode调试工具 536
    20.1.1 定位编译错误 536
    20.1.2 查看和显示日志 537
    20.1.3 设置和查看断点 539
    20.1.4 调试工具 544
    20.1.5 输出窗口 545
    20.1.6 变量查看窗口 546
    20.1.7 查看线程 547
    20.2 LLDB调试工具 548
    20.2.1 断点命令 548
    20.2.2 观察点命令 550
    20.2.3 查看变量和计算表达式命令 552
    20.3 日志与断言输出 554
    20.3.1 使用NSLog函数 554
    20.3.2 使用断言 555
    20.4 异常栈报告分析 556
    20.4.1 跟踪异常栈 556
    20.4.2 分析栈报告 558
    20.5 在iOS设备上调试 559
    20.5.1 Xcode设置 559
    20.5.2 设备设置 560
    20.6 Xcode设备管理工具 562
    20.6.1 查看设备上的应用程序 562
    20.6.2 设备日志 564
    20.7 小结 564
    第21章 iOS测试驱动与单元测试 565
    21.1 测试驱动的软件开发概述 565
    21.1.1 测试驱动的软件开发流程 565
    21.1.2 测试驱动的软件开发案例 566
    21.1.3 iOS单元测试框架 567
    21.2 使用XCTest测试框架 568
    21.2.1 添加XCTest到工程 568
    21.2.2 Swift版本中设置编译目标成员 570
    21.2.3 编写XCTest测试方法 570
    21.2.4 运行测试用例目标 573
    21.2.5 分析测试报告 575
    21.3 异步单元测试 576
    21.4 性能测试 580
    21.4.1 Swift版本中配置测试环境 580
    21.4.2 测试用例代码 580
    21.4.3 分析测试结果 581
    21.5 iOS单元测试最佳实践 583
    21.5.1 配置测试数据持久层 583
    21.5.2 编写数据持久层测试用例 584
    21.5.3 运行测试数据持久层测试用例 587
    21.5.4 配置测试业务逻辑层 588
    21.5.5 编写业务逻辑层测试用例 588
    21.6 小结 589
    第22章 iOS应用UI测试 590
    22.1 UI测试概述 590
    22.2 添加UI测试到工程 590
    22.2.1 创建工程时添加UI测试框架 590
    22.2.2 在现有工程中添加UI测试用例
    目标 591
    22.3 录制脚本 593
    22.3.1 录制之前的准备 593
    22.3.2 录制过程 593
    22.3.3 修改录制脚本 595
    22.4 访问UI元素 595
    22.4.1 UI元素层次结构树 595
    22.4.2 UI测试中相关API 597
    22.5 表示层测试最佳实践 598
    22.5.1 配置UI测试用例目标 598
    22.5.2 编写UI测试用例 599
    22.6 小结 602
    第23章 让你的程序“飞”起来——性能
    优化 603
    23.1 内存优化 603
    23.1.1 内存管理 603
    23.1.2 使用Analyze工具检查内存泄漏 603
    23.1.3 使用Instruments工具检查内存
    泄漏 608
    23.1.4 使用Instruments工具检查僵尸
    对象 612
    23.1.5 autorelease的使用问题 615
    23.1.6 响应内存警告 616
    23.2 优化资源文件 617
    23.2.1 图片文件优化 618
    23.2.2 音频文件优化 619
    23.3 延迟加载 620
    23.3.1 资源文件的延迟加载 620
    23.3.2 故事板文件的延迟加载 624
    23.3.3 XIB文件的延迟加载 626
    23.4 数据持久化的优化 628
    23.4.1 使用文件 628
    23.4.2 使用SQLite数据库 631
    23.4.3 使用Core Data 632
    23.5 可重用对象的使用 634
    23.5.1 表视图中的可重用对象 635
    23.5.2 集合视图中的可重用对象 636
    23.5.3 地图视图中的可重用对象 638
    23.6 并发处理与多核CPU 638
    23.6.1 主线程阻塞问题 638
    23.6.2 选择NSThread还是GCD 639
    23.7 小结 640
    第五部分 实 战 篇
    第24章 管理好你的程序代码——代码版本
    控制 642
    24.1 概述 642
    24.1.1 版本控制历史 642
    24.1.2 基本概念 643
    24.2 Git代码版本控制 643
    24.2.1 服务器搭建 643
    24.2.2 Gitolite服务器管理 645
    24.2.3 Git常用命令 647
    24.2.4 Git分支 649
    24.2.5 Git协同开发 653
    24.2.6 Xcode中Git的配置与使用 656
    24.3 GitHub代码托管服务 663
    24.3.1 创建和配置GitHub账号 663
    24.3.2 创建代码库 666
    24.3.3 删除代码库 668
    24.3.4 派生代码库 669
    24.3.5 使用GitHub协同开发 671
    24.3.6 管理组织 677
    24.4 小结 680
    第25章 项目依赖管理 681
    25.1 使用CocoaPods工具管理依赖 681
    25.1.1 安装CocoaPods 681
    25.1.2 搜索库 682
    25.1.3 项目与第三方库搭配形式 683
    25.1.4 示例:静态链接库形式管理依赖 684
    25.1.5 示例:框架形式管理依赖 686
    25.2 使用Carthage工具管理依赖 687
    25.2.1 安装Carthage 688
    25.2.2 项目与第三方库搭配形式 688
    25.2.3 Cartfile文件 688
    25.2.4 示例:重构MyNotes依赖关系 689
    25.3 小结 691
    第26章 重构MyNotes应用——iOS网络
    通信中的设计模式与架构设计 692
    26.1 移动网络通信应用的分层架构设计 692
    26.2 Objective-C版本:在数据持久层中添加和
    配置AFNetworking 693
    26.2.1 用CocoaPods工具管理依赖 693
    26.2.2 测试依赖 693
    26.3 Swift版本:在数据持久层中添加和配置
    Alamofire 694
    26.3.1 用Carthage工具管理依赖 694
    26.3.2 测试依赖 695
    26.4 基于委托模式实现 695
    26.4.1 网络通信与委托模式 696
    26.4.2 在异步网络通信中使用委托模式
    实现分层架构设计 696
    26.4.3 类图 697
    26.4.4 时序图 699
    26.4.5 数据持久层重构(Objective-C
    版本) 702
    26.4.6 数据持久层重构(Swift版本) 705
    26.4.7 业务逻辑层的代码实现 707
    26.4.8 表示层的代码实现 710
    26.5 基于观察者模式的通知机制实现 716
    26.5.1 观察者模式的通知机制回顾 716
    26.5.2 异步网络通信中通知机制的分层架
    构设计 716
    26.5.3 类图 717
    26.5.4 时序图 719
    26.5.5 数据持久层重构(Objective-C
    版本) 722
    26.5.6 数据持久层重构(Swift版本) 723
    26.5.7 业务逻辑层的代码实现 725
    26.5.8 表示层的代码实现 726
    26.6 小结 731
    第27章 把你的应用放到App Store上 732
    27.1 收官 732
    27.1.1 在Xcode 中添加图标 732
    27.1.2 在Xcode中添加启动界面 734
    27.1.3 调整Identity和Deployment Info
    属性 738
    27.2 为发布进行编译 739
    27.2.1 创建开发者证书 739
    27.2.2 创建App ID 744
    27.2.3 创建描述文件 745
    27.2.4 发布编译 748
    27.3 发布上架 750
    27.3.1 创建应用 750
    27.3.2 应用定价 753
    27.3.3 基本信息输入 754
    27.3.4 上传应用 757
    27.3.5 提交审核 759
    27.4 常见审核不通过的原因 761
    27.4.1 功能问题 761
    27.4.2 用户界面问题 761
    27.4.3 商业问题 761
    27.4.4 不当内容 761
    27.4.5 其他问题 762
    27.5 小结 762
    第28章 iOS敏捷开发项目实战——2016里
    约热内卢奥运会应用开发及App Store发布 763
    28.1 应用分析与设计 763
    28.1.1 应用概述 763
    28.1.2 需求分析 763
    28.1.3 原型设计 764
    28.1.4 数据库设计 765
    28.1.5 架构设计 766
    28.2 iOS敏捷开发 766
    28.2.1 敏捷开发宣言 766
    28.2.2 iOS适合敏捷开发? 767
    28.2.3 iOS敏捷开发最佳实践 767
    28.3 任务1:创建应用工作空间和工程 769
    28.3.1 迭代1.1:创建工作空间 769
    28.3.2 迭代1.2:发布到GitHub 769
    28.4 任务2:信息系统层与持久层开发 770
    28.4.1 迭代2.1:编写数据库DDL脚本 770
    28.4.2 迭代2.2:插入初始数据到数据库 770
    28.4.3 迭代2.3:数据库版本控制 771
    28.4.4 迭代2.4:配置持久层工程PersistenceLayer 771
    28.4.5 迭代2.5:编写实体类 772
    28.4.6 迭代2.6:编写DAO类单元测试用例类 773
    28.4.7 迭代2.7:编写DAO类 775
    28.4.8 迭代2.8:数据库帮助类DBHelper 779
    28.4.9 迭代2.9:配置及运行持久层测试用例目标 781
    28.4.10 迭代2.10:发布到GitHub 782
    28.5 任务3:业务逻辑层开发 782
    28.5.1 迭代3.1:比赛项目业务逻辑类
    XCTest单元测试 783
    28.5.2 迭代3.2:编写比赛项目业务
    逻辑类 784
    28.5.3 迭代3.3:比赛日程业务逻辑类
    XCTest单元测试 785
    28.5.4 迭代3.4:编写比赛日程业务
    逻辑类 786
    28.5.5 迭代3.5:发布到GitHub 787
    28.6 任务4:表示层开发 788
    28.6.1 迭代4.1:使用资源目录管理图片和图标资源 788
    28.6.2 迭代4.2:根据原型设计初步设计
    故事板 789
    28.6.3 迭代4.3:“首页”模块 790
    28.6.4 迭代4.4:“比赛项目”模块 791
    28.6.5 迭代4.5:“比赛日程”模块 795
    28.6.6 迭代4.6:“倒计时”模块
    表示层 797
    28.6.7 迭代4.7:“关于我们”模块
    表示层 800
    28.6.8 迭代4.8:发布到GitHub 800
    28.7 任务5:收工 800
    28.7.1 迭代5.1:添加图标 800
    28.7.2 迭代5.2:设计和添加启动界面 801
    28.7.3 迭代5.3:性能测试与改善 801
    28.7.4 迭代5.4:发布到GitHub上 802
    28.7.5 迭代5.5:在App Store上发布
    应用 802
    28.8 小结 802
  • 内容简介:
    本书是iOS开发杰出指南,分5部分讲解如何从零起步编写并上线iOS应用。首部分介绍iOS开发基础知识,包括界面构建技术、基本控件、协议、表视图、屏幕适配、导航、分屏多任务等。第二部分介绍设计与架构的相关知识,包括设计模式、分层模式、本地数据持久化等。第三部分为进阶篇,包括设置与配置、本地化、Contacts与ContactsUI框架、数据交换格式、Web Service、定位服务、苹果地图等内容。第四部分介绍测试、调试和优化等相关知识。第五部分为实战篇,涵盖代码版本管理、项目依赖管理、App Store发布流程,以及两个真实iOS应用的分析设计、编程、测试与分布过程。本书同时提供Swift和Objective-C两版代码。

    本书适合所有iOS开发人员学习参考。
  • 作者简介:
    国内杰出iOS和Cocos技术作家、iOS技术顾问、Cocos有价值专家(CVP)、智捷课堂首席培训专家、51CTO社区iOS技术顾问。他精通iOS、Android和Windows及HTML5等移动开发技术,擅长应用和游戏类项目开发,曾先后主持开发:大型网络游戏《神农诀》的iOS和Android客户端,国家农产品追溯系统的iPad客户端,酒店预订系统的iOS客户端,金融系统的iOS、Windows及Android客户端。与此同时,他长期为中国移动研究院、方正科技、大唐电信、中国石油、工商银行、南方航空、惠普、东软集团、NTT等企事业单位提供技术咨询及员工培训。
  • 目录:
    第一部分 基 础 篇
    第1章 开篇综述 2
    1.1 iOS概述 2
    1.1.1 iOS介绍 2
    1.1.2 iOS 9新特性 2
    1.2 开发环境及开发工具 3
    1.3 本书约定 4
    1.3.1 案例代码约定 4
    1.3.2 图示的约定 5
    1.3.3 方法命名约定 6
    1.3.4 构造函数命名约定 7
    1.3.5 错误处理约定 8
    第2章 第一个iOS应用程序 10
    2.1 创建HelloWorld工程 10
    2.1.1 创建工程 10
    2.1.2 Xcode中的iOS工程模板 14
    2.1.3 应用剖析 15
    2.2 应用生命周期 17
    2.2.1 非运行状态——应用启动场景 19
    2.2.2 点击Home键——应用退出场景 20
    2.2.3 挂起重新运行场景 22
    2.2.4 内存清除:应用终止场景 23
    2.3 设置产品属性 23
    2.3.1 Xcode中的工程和目标 23
    2.3.2 设置常用的产品属性 26
    2.4 iOS API简介 27
    2.4.1 API概述 27
    2.4.2 如何使用API帮助 29
    2.5 小结 32
    第3章 Cocoa Touch框架与构建应用界面 33
    3.1 视图控制器 33
    3.1.1 视图控制器种类 33
    3.1.2 视图的生命周期 33
    3.2 视图 35
    3.2.1 UIView继承层次结构 35
    3.2.2 视图分类 37
    3.2.3 应用界面构建层次 37
    3.3 使用故事板构建界面 38
    3.3.1 什么是故事板 39
    3.3.2 场景和过渡 41
    3.4 使用XIB文件构建界面 42
    3.4.1 重构HelloWorld 42
    3.4.2 XIB与故事板比较 45
    3.5 使用纯代码构建界面 45
    3.5.1 重构HelloWorld 46
    3.5.2 视图的几个重要属性 47
    3.6 3种构建界面技术讨论 49
    3.6.1 所见即所得 49
    3.6.2 原型驱动开发 49
    3.6.3 团队协同开发 49
    3.7 小结 50
    第4章 UIView与视图 51
    4.1 标签与按钮 51
    4.1.1 Interface Builder实现 51
    4.1.2 代码实现 55
    4.2 事件处理 56
    4.2.1 Interface Builder实现 56
    4.2.2 代码实现 59
    4.3 访问视图 60
    4.3.1 Interface Builder实现 60
    4.3.2 代码实现 62
    4.4 TextField和TextView 63
    4.4.1 Interface Builder实现 64
    4.4.2 代码实现 65
    4.4.3 键盘的打开和关闭 67
    4.4.4 关闭和打开键盘的通知 68
    4.4.5 键盘的种类 69
    4.5 开关控件、分段控件和滑块控件 70
    4.5.1 开关控件 71
    4.5.2 分段控件 72
    4.5.3 滑块控件 74
    4.6 Web视图:WKWebView类 76
    4.7 警告框和操作表 80
    4.7.1 UIAlertController实现警告框 81
    4.7.2 UIAlertController实现操作表 83
    4.8 等待相关的控件与进度条 84
    4.8.1 活动指示器ActivityIndicatorView 85
    4.8.2 进度条ProgressView 87
    4.9 工具栏和导航栏 90
    4.9.1 工具栏 90
    4.9.2 导航栏 94
    4.10 小结 98
    第5章 委托协议、数据源协议与高级视图 99
    5.1 视图中的委托协议和数据源协议 99
    5.2 选择器 99
    5.2.1 日期选择器 99
    5.2.2 普通选择器 104
    5.2.3 数据源协议与委托协议 109
    5.3 集合视图 111
    5.4 实例:Interface Builder实现奥运会比赛
    项目 112
    5.4.1 添加集合视图 113
    5.4.2 添加集合视图单元格 114
    5.4.3 数据源协议与委托协议 118
    5.5 实例:代码实现奥运会比赛项目 120
    5.5.1 添加集合视图 120
    5.5.2 自定义集合视图单元格 122
    5.6 小结 123
    第6章 表视图 124
    6.1 概述 124
    6.1.1 表视图的组成 124
    6.1.2 表视图的相关类 125
    6.1.3 表视图分类 125
    6.1.4 单元格的组成和样式 127
    6.1.5 数据源协议与委托协议 129
    6.2 简单表视图 129
    6.2.1 实现协议方法 130
    6.2.2 UIViewController根视图控制器 130
    6.2.3 UITableViewController根视图
    控制器 137
    6.3 自定义表视图单元格 140
    6.3.1 Interface Builder实现 141
    6.3.2 代码实现 145
    6.4 添加搜索栏 146
    6.5 分节表视图 150
    6.5.1 添加索引 150
    6.5.2 分组 153
    6.6 静态表与界面布局 154
    6.7 插入和删除单元格 160
    6.7.1 Interface Builder实现 162
    6.7.2 代码实现 167
    6.8 移动单元格 169
    6.9 表视图UI设计模式 171
    6.9.1 分页模式 171
    6.9.2 下拉刷新模式 171
    6.9.3 下拉刷新控件 172
    6.10 小结 174
    第7章 界面布局与屏幕适配 175
    7.1 界面布局概述 175
    7.2 iOS界面布局设计模式 176
    7.2.1 表单布局模式 176
    7.2.2 列表布局模式 176
    7.2.3 网格布局模式 177
    7.3 传统布局技术 177
    7.4 Auto Layout布局技术 179
    7.4.1 Interface Builder中管理Auto Layout
    约束 179
    7.4.2 实例:Auto Layout布局 180
    7.5 iOS 9堆视图StackView 185
    7.5.1 堆视图与布局 185
    7.5.2 实例:堆视图布局 186
    7.6 iOS 屏幕的多样性 191
    7.6.1 iOS屏幕介绍 191
    7.6.2 iOS的3种分辨率 192
    7.6.3 获得iOS设备屏幕信息 193
    7.7 Size Class与iOS多屏幕适配 194
    7.7.1 Interface Builder中使用Size Class 195
    7.7.2 Size Class的九宫格 195
    7.7.3 实例:使用Size Class 196
    7.8 资源目录与图片资源适配 201
    7.9 小结 204
    第8章 视图控制器与导航模式 205
    8.1 概述 205
    8.1.1 视图控制器的种类 205
    8.1.2 导航模式 205
    8.2 模态视图 207
    8.2.1 Interface Builder实现 208
    8.2.2 代码实现 214
    8.3 平铺导航 215
    8.3.1 应用场景 215
    8.3.2 基于分屏导航的实现 217
    8.3.3 基于电子书导航的实现 223
    8.4 标签导航 228
    8.4.1 应用场景 229
    8.4.2 Interface Builder实现 230
    8.4.3 代码实现 234
    8.5 树形结构导航 235
    8.5.1 应用场景 235
    8.5.2 Interface Builder实现 236
    8.5.3 代码实现 244
    8.6 组合使用导航模式 245
    8.6.1 应用场景 246
    8.6.2 Interface Builder实现 246
    8.6.3 代码实现 254
    8.7 小结 257
    第9章 iPad应用开发 258
    9.1 iPad与iPhone应用开发的差异 258
    9.1.1 应用场景不同 258
    9.1.2 导航模式不同 258
    9.1.3 API不同 258
    9.2 iPad树形结构导航 259
    9.2.1 邮件应用中的树形结构导航 259
    9.2.2 Master-Detail应用程序模板 260
    9.2.3 Interface Builder实现SplitViewSample案例 266
    9.2.4 代码实现SplitViewSample案例 270
    9.3 iPad模态视图 273
    9.3.1 邮件应用中的模态导航 273
    9.3.2 iPad模态导航相关API 275
    9.3.3 Interface Builder实现ModalView-
    Sample案例 277
    9.3.4 代码实现ModalViewSample案例 281
    9.4 Popover(浮动层)视图 284
    9.4.1 Popover相关API 284
    9.4.2 PopoverViewSample案例 285
    9.5 iOS 9分屏多任务 289
    9.5.1 Slide Over多任务 289
    9.5.2 分屏视图多任务 290
    9.5.3 画中画多任务 293
    9.6 iPad分屏多任务适配开发 293
    9.6.1 分屏多任务前提条件 293
    9.6.2 分屏多任务适配 294
    9.7 小结 295
    第二部分 设计与架构篇
    第10章 iOS常用设计模式 298
    10.1 单例模式 298
    10.1.1 问题提出 298
    10.1.2 Objective-C实现原理 298
    10.1.3 Swift实现原理 299
    10.1.4 应用案例 300
    10.2 委托模式 301
    10.2.1 问题提出 301
    10.2.2 实现原理 303
    10.2.3 应用案例 306
    10.3 观察者模式 309
    10.3.1 问题提出 309
    10.3.2 实现原理 310
    10.3.3 通知机制和KVO机制 311
    10.4 再谈MVC模式 317
    10.4.1 MVC模式概述 317
    10.4.2 Cocoa Touch中的MVC模式 318
    10.5 小结 320
    第11章 iOS分层架构设计 321
    11.1 低耦合企业级系统架构设计 321
    11.2 iOS分层架构设计 322
    11.2.1 工程与工作空间 322
    11.2.2 静态链接库 323
    11.2.3 框架 323
    11.2.4 16种分层模式 324
    11.3 实例:MyNotes应用 325
    11.4 基于同一工程的分层 327
    11.4.1 采用纯Swift语言实现:PSSS
    模式 327
    11.4.2 采用纯Objective-C语言实现:
    POOO模式 330
    11.4.3 采用Swift调用Objective-C的
    混合搭配实现:PSOO模式 334
    11.5 基于同一工作空间静态链接库实现的WLSOO
    模式 335
    11.5.1 使用工作空间 335
    11.5.2 添加数据持久层工程 336
    11.5.3 建立业务逻辑层与数据持久层依赖
    关系 337
    11.5.4 建立表示层与业务逻辑层依赖
    关系 339
    11.6 基于同一工作空间框架实现的WFSSS
    模式 339
    11.6.1 创建框架工程 340
    11.6.2 建立依赖关系 341
    11.6.3 代码重构 342
    11.7 基于同一工作空间框架实现的WFOOO
    模式 344
    11.7.1 设置Public头文件 344
    11.7.2 设置保护伞头文件 345
    11.7.3 代码重构 345
    11.8 基于同一工作空间框架实现的WFSOO
    模式 346
    11.8.1 设置Public头文件 346
    11.8.2 设置保护伞头文件 346
    11.8.3 建立表示层与业务逻辑层依赖
    关系 346
    11.8.4 代码重构 346
    11.9 基于同一工作空间框架实现的WFOSS
    模式 346
    11.9.1 设置Public头文件 346
    11.9.2 设置Swift代码嵌入应用 347
    11.9.3 代码重构 347
    11.10 基于同一个工程不同目标框架实现的
    TFSOO模式 348
    11.10.1 使用目标 348
    11.10.2 添加框架目标 348
    11.11 小结 349
    第12章 数据持久化 350
    12.1 概述 350
    12.1.1 沙箱目录 350
    12.1.2 持久化方式 351
    12.2 属性列表 351
    12.3 对象归档 357
    12.4 使用SQLite数据库 361
    12.4.1 SQLite数据类型 361
    12.4.2 配置Objective-C框架工程环境 362
    12.4.3 配置Swift框架工程环境 362
    12.4.4 创建数据库 364
    12.4.5 查询数据 365
    12.4.6 修改数据 368
    12.5 Core Data 370
    12.5.1 ORM 370
    12.5.2 Core Data栈 371
    12.5.3 建模和生成实体 374
    12.5.4 采用Core Data分层架构设计 380
    12.5.5 查询数据 382
    12.5.6 修改数据 384
    12.6 小结 385
    第三部分 进 阶 篇
    第13章 应用程序设置 388
    13.1 概述 388
    13.1.1 设置 388
    13.1.2 配置 389
    13.2 应用程序设置包 390
    13.3 设置项目种类 392
    13.3.1 文本字段 395
    13.3.2 开关 398
    13.3.3 滑块 399
    13.3.4 值列表 400
    13.3.5 子界面 401
    13.4 读取设置 403
    13.5 小结 405
    第14章 本地化 406
    14.1 概述 406
    14.1.1 需要本地化的内容 406
    14.1.2 本地化目录结构 409
    14.2 文本信息本地化 410
    14.2.1 系统按钮和信息本地化 410
    14.2.2 应用名称本地化 411
    14.2.3 程序代码输出的静态文本本地化 413
    14.2.4 使用genstring工具 414
    14.3 故事板和XIB文件本地化 415
    14.3.1 使用Base Internationalization技术 415
    14.3.2 Auto Layout与本地化 417
    14.4 资源文件本地化 419
    14.4.1 图片资源文件本地化 419
    14.4.2 声音资源文件本地化 420
    14.5 小结 421
    第15章 iOS 9中访问通讯录 422
    15.1 通讯录的安全访问设置 422
    15.2 使用Contacts框架读取联系人信息 423
    15.2.1 查询联系人 423
    15.2.2 读取单值属性 426
    15.2.3 读取多值属性 428
    15.2.4 读取图片属性 430
    15.3 使用Contacts框架写入联系人信息 430
    15.3.1 创建联系人 431
    15.3.2 修改联系人 433
    15.3.3 删除联系人 434
    15.4 使用系统提供界面 435
    15.4.1 选择联系人 435
    15.4.2 显示和修改联系人 438
    15.4.3 创建联系人 441
    15.5 小结 444
    第16章 数据交换格式 445
    16.1 XML数据交换格式 446
    16.1.1 XML文档结构 446
    16.1.2 解析XML文档 447
    16.2 实例:MyNotes应用XML 448
    16.2.1 使用NSXML解析 450
    16.2.2 使用TBXML解析 453
    16.3 JSON数据交换格式 459
    16.3.1 JSON文档结构 459
    16.3.2 JSON数据编码/解码 460
    16.4 实例:MyNotes应用JSON解码 461
    16.5 小结 462
    第17章 REST Web Service 463
    17.1 概述 463
    17.2 使用NSURLSession 464
    17.2.1 NSURLSession API 464
    17.2.2 简单会话实现GET请求 465
    17.2.3 默认会话实现GET请求 468
    17.2.4 实现POST请求 469
    17.2.5 下载数据 470
    17.3 实例:使用NSURLSession重构MyNotes
    案例 473
    17.3.1 插入方法调用 473
    17.3.2 修改方法调用 474
    17.3.3 删除方法调用 475
    17.4 使用AFNetworking框架 477
    17.4.1 比较ASIHTTPRequest、
    AFNetworking和MKNetworkKit 477
    17.4.2 安装和配置AFNetworking框架 478
    17.4.3 实现GET请求 479
    17.4.4 实现POST请求 480
    17.4.5 下载数据 481
    17.4.6 上传数据 482
    17.5 使用为Swift设计的网络框架:
    Alamofire 484
    17.5.1 安装和配置Alamofire框架 484
    17.5.2 实现GET请求 485
    17.5.3 实现POST请求 486
    17.5.4 下载数据 487
    17.5.5 上传数据 488
    17.6 反馈网络信息改善用户体验 489
    17.6.1 使用下拉刷新控件改善用户体验 489
    17.6.2 使用活动指示器控件 492
    17.6.3 使用网络活动指示器 494
    17.7 小结 494
    第18章 定位服务 495
    18.1 定位服务概述 495
    18.1.1 定位服务编程 496
    18.1.2 测试定位服务 499
    18.2 管理定位服务 503
    18.2.1 应用启动与停止下的定位服务
    管理 504
    18.2.2 视图切换下的定位服务管理 504
    18.2.3 应用前后台切换下的定位服务
    管理 505
    18.2.4 设置自动暂停位置服务 507
    18.2.5 iOS 9后台位置服务管理 507
    18.3 地理信息编码与反编码 508
    18.3.1 地理信息反编码 508
    18.3.2 实例:地理信息反编码 509
    18.3.3 地理信息编码查询 510
    18.3.4 实例:地理信息编码查询 510
    18.4 微定位技术iBeacon 512
    18.4.1 微定位与地理围栏 512
    18.4.2 iBeacon技术概述 512
    18.4.3 实例:使用iBeacon技术实现微
    定位 513
    18.5 小结 519
    第19章 苹果地图应用 520
    19.1 使用iOS苹果地图 520
    19.1.1 显示地图 520
    19.1.2 显示3D地图 524
    19.2 添加标注 525
    19.2.1 实现查询 526
    19.2.2 在地图上添加标注 528
    19.3 跟踪用户位置变化 529
    19.4 使用程序外地图 530
    19.5 小结 533
    第四部分 测试、调试和优化篇
    第20章 找出程序中的bug——调试 536
    20.1 Xcode调试工具 536
    20.1.1 定位编译错误 536
    20.1.2 查看和显示日志 537
    20.1.3 设置和查看断点 539
    20.1.4 调试工具 544
    20.1.5 输出窗口 545
    20.1.6 变量查看窗口 546
    20.1.7 查看线程 547
    20.2 LLDB调试工具 548
    20.2.1 断点命令 548
    20.2.2 观察点命令 550
    20.2.3 查看变量和计算表达式命令 552
    20.3 日志与断言输出 554
    20.3.1 使用NSLog函数 554
    20.3.2 使用断言 555
    20.4 异常栈报告分析 556
    20.4.1 跟踪异常栈 556
    20.4.2 分析栈报告 558
    20.5 在iOS设备上调试 559
    20.5.1 Xcode设置 559
    20.5.2 设备设置 560
    20.6 Xcode设备管理工具 562
    20.6.1 查看设备上的应用程序 562
    20.6.2 设备日志 564
    20.7 小结 564
    第21章 iOS测试驱动与单元测试 565
    21.1 测试驱动的软件开发概述 565
    21.1.1 测试驱动的软件开发流程 565
    21.1.2 测试驱动的软件开发案例 566
    21.1.3 iOS单元测试框架 567
    21.2 使用XCTest测试框架 568
    21.2.1 添加XCTest到工程 568
    21.2.2 Swift版本中设置编译目标成员 570
    21.2.3 编写XCTest测试方法 570
    21.2.4 运行测试用例目标 573
    21.2.5 分析测试报告 575
    21.3 异步单元测试 576
    21.4 性能测试 580
    21.4.1 Swift版本中配置测试环境 580
    21.4.2 测试用例代码 580
    21.4.3 分析测试结果 581
    21.5 iOS单元测试最佳实践 583
    21.5.1 配置测试数据持久层 583
    21.5.2 编写数据持久层测试用例 584
    21.5.3 运行测试数据持久层测试用例 587
    21.5.4 配置测试业务逻辑层 588
    21.5.5 编写业务逻辑层测试用例 588
    21.6 小结 589
    第22章 iOS应用UI测试 590
    22.1 UI测试概述 590
    22.2 添加UI测试到工程 590
    22.2.1 创建工程时添加UI测试框架 590
    22.2.2 在现有工程中添加UI测试用例
    目标 591
    22.3 录制脚本 593
    22.3.1 录制之前的准备 593
    22.3.2 录制过程 593
    22.3.3 修改录制脚本 595
    22.4 访问UI元素 595
    22.4.1 UI元素层次结构树 595
    22.4.2 UI测试中相关API 597
    22.5 表示层测试最佳实践 598
    22.5.1 配置UI测试用例目标 598
    22.5.2 编写UI测试用例 599
    22.6 小结 602
    第23章 让你的程序“飞”起来——性能
    优化 603
    23.1 内存优化 603
    23.1.1 内存管理 603
    23.1.2 使用Analyze工具检查内存泄漏 603
    23.1.3 使用Instruments工具检查内存
    泄漏 608
    23.1.4 使用Instruments工具检查僵尸
    对象 612
    23.1.5 autorelease的使用问题 615
    23.1.6 响应内存警告 616
    23.2 优化资源文件 617
    23.2.1 图片文件优化 618
    23.2.2 音频文件优化 619
    23.3 延迟加载 620
    23.3.1 资源文件的延迟加载 620
    23.3.2 故事板文件的延迟加载 624
    23.3.3 XIB文件的延迟加载 626
    23.4 数据持久化的优化 628
    23.4.1 使用文件 628
    23.4.2 使用SQLite数据库 631
    23.4.3 使用Core Data 632
    23.5 可重用对象的使用 634
    23.5.1 表视图中的可重用对象 635
    23.5.2 集合视图中的可重用对象 636
    23.5.3 地图视图中的可重用对象 638
    23.6 并发处理与多核CPU 638
    23.6.1 主线程阻塞问题 638
    23.6.2 选择NSThread还是GCD 639
    23.7 小结 640
    第五部分 实 战 篇
    第24章 管理好你的程序代码——代码版本
    控制 642
    24.1 概述 642
    24.1.1 版本控制历史 642
    24.1.2 基本概念 643
    24.2 Git代码版本控制 643
    24.2.1 服务器搭建 643
    24.2.2 Gitolite服务器管理 645
    24.2.3 Git常用命令 647
    24.2.4 Git分支 649
    24.2.5 Git协同开发 653
    24.2.6 Xcode中Git的配置与使用 656
    24.3 GitHub代码托管服务 663
    24.3.1 创建和配置GitHub账号 663
    24.3.2 创建代码库 666
    24.3.3 删除代码库 668
    24.3.4 派生代码库 669
    24.3.5 使用GitHub协同开发 671
    24.3.6 管理组织 677
    24.4 小结 680
    第25章 项目依赖管理 681
    25.1 使用CocoaPods工具管理依赖 681
    25.1.1 安装CocoaPods 681
    25.1.2 搜索库 682
    25.1.3 项目与第三方库搭配形式 683
    25.1.4 示例:静态链接库形式管理依赖 684
    25.1.5 示例:框架形式管理依赖 686
    25.2 使用Carthage工具管理依赖 687
    25.2.1 安装Carthage 688
    25.2.2 项目与第三方库搭配形式 688
    25.2.3 Cartfile文件 688
    25.2.4 示例:重构MyNotes依赖关系 689
    25.3 小结 691
    第26章 重构MyNotes应用——iOS网络
    通信中的设计模式与架构设计 692
    26.1 移动网络通信应用的分层架构设计 692
    26.2 Objective-C版本:在数据持久层中添加和
    配置AFNetworking 693
    26.2.1 用CocoaPods工具管理依赖 693
    26.2.2 测试依赖 693
    26.3 Swift版本:在数据持久层中添加和配置
    Alamofire 694
    26.3.1 用Carthage工具管理依赖 694
    26.3.2 测试依赖 695
    26.4 基于委托模式实现 695
    26.4.1 网络通信与委托模式 696
    26.4.2 在异步网络通信中使用委托模式
    实现分层架构设计 696
    26.4.3 类图 697
    26.4.4 时序图 699
    26.4.5 数据持久层重构(Objective-C
    版本) 702
    26.4.6 数据持久层重构(Swift版本) 705
    26.4.7 业务逻辑层的代码实现 707
    26.4.8 表示层的代码实现 710
    26.5 基于观察者模式的通知机制实现 716
    26.5.1 观察者模式的通知机制回顾 716
    26.5.2 异步网络通信中通知机制的分层架
    构设计 716
    26.5.3 类图 717
    26.5.4 时序图 719
    26.5.5 数据持久层重构(Objective-C
    版本) 722
    26.5.6 数据持久层重构(Swift版本) 723
    26.5.7 业务逻辑层的代码实现 725
    26.5.8 表示层的代码实现 726
    26.6 小结 731
    第27章 把你的应用放到App Store上 732
    27.1 收官 732
    27.1.1 在Xcode 中添加图标 732
    27.1.2 在Xcode中添加启动界面 734
    27.1.3 调整Identity和Deployment Info
    属性 738
    27.2 为发布进行编译 739
    27.2.1 创建开发者证书 739
    27.2.2 创建App ID 744
    27.2.3 创建描述文件 745
    27.2.4 发布编译 748
    27.3 发布上架 750
    27.3.1 创建应用 750
    27.3.2 应用定价 753
    27.3.3 基本信息输入 754
    27.3.4 上传应用 757
    27.3.5 提交审核 759
    27.4 常见审核不通过的原因 761
    27.4.1 功能问题 761
    27.4.2 用户界面问题 761
    27.4.3 商业问题 761
    27.4.4 不当内容 761
    27.4.5 其他问题 762
    27.5 小结 762
    第28章 iOS敏捷开发项目实战——2016里
    约热内卢奥运会应用开发及App Store发布 763
    28.1 应用分析与设计 763
    28.1.1 应用概述 763
    28.1.2 需求分析 763
    28.1.3 原型设计 764
    28.1.4 数据库设计 765
    28.1.5 架构设计 766
    28.2 iOS敏捷开发 766
    28.2.1 敏捷开发宣言 766
    28.2.2 iOS适合敏捷开发? 767
    28.2.3 iOS敏捷开发最佳实践 767
    28.3 任务1:创建应用工作空间和工程 769
    28.3.1 迭代1.1:创建工作空间 769
    28.3.2 迭代1.2:发布到GitHub 769
    28.4 任务2:信息系统层与持久层开发 770
    28.4.1 迭代2.1:编写数据库DDL脚本 770
    28.4.2 迭代2.2:插入初始数据到数据库 770
    28.4.3 迭代2.3:数据库版本控制 771
    28.4.4 迭代2.4:配置持久层工程PersistenceLayer 771
    28.4.5 迭代2.5:编写实体类 772
    28.4.6 迭代2.6:编写DAO类单元测试用例类 773
    28.4.7 迭代2.7:编写DAO类 775
    28.4.8 迭代2.8:数据库帮助类DBHelper 779
    28.4.9 迭代2.9:配置及运行持久层测试用例目标 781
    28.4.10 迭代2.10:发布到GitHub 782
    28.5 任务3:业务逻辑层开发 782
    28.5.1 迭代3.1:比赛项目业务逻辑类
    XCTest单元测试 783
    28.5.2 迭代3.2:编写比赛项目业务
    逻辑类 784
    28.5.3 迭代3.3:比赛日程业务逻辑类
    XCTest单元测试 785
    28.5.4 迭代3.4:编写比赛日程业务
    逻辑类 786
    28.5.5 迭代3.5:发布到GitHub 787
    28.6 任务4:表示层开发 788
    28.6.1 迭代4.1:使用资源目录管理图片和图标资源 788
    28.6.2 迭代4.2:根据原型设计初步设计
    故事板 789
    28.6.3 迭代4.3:“首页”模块 790
    28.6.4 迭代4.4:“比赛项目”模块 791
    28.6.5 迭代4.5:“比赛日程”模块 795
    28.6.6 迭代4.6:“倒计时”模块
    表示层 797
    28.6.7 迭代4.7:“关于我们”模块
    表示层 800
    28.6.8 迭代4.8:发布到GitHub 800
    28.7 任务5:收工 800
    28.7.1 迭代5.1:添加图标 800
    28.7.2 迭代5.2:设计和添加启动界面 801
    28.7.3 迭代5.3:性能测试与改善 801
    28.7.4 迭代5.4:发布到GitHub上 802
    28.7.5 迭代5.5:在App Store上发布
    应用 802
    28.8 小结 802
查看详情
12
系列丛书 / 更多
iOS开发指南:从Hello World到App Store上架(第4版)
第一行代码:Android
郭霖 著
iOS开发指南:从Hello World到App Store上架(第4版)
啊哈!算法
啊哈磊 著
iOS开发指南:从Hello World到App Store上架(第4版)
推荐系统实践
项亮 著
iOS开发指南:从Hello World到App Store上架(第4版)
深入浅出Node.js
朴灵 著
iOS开发指南:从Hello World到App Store上架(第4版)
SEO教程:搜索引擎优化入门与进阶(第3版)
吴泽欣 著
iOS开发指南:从Hello World到App Store上架(第4版)
Unity 3D游戏开发
宣雨松 著
iOS开发指南:从Hello World到App Store上架(第4版)
Go语言编程
许式伟 著
iOS开发指南:从Hello World到App Store上架(第4版)
iOS开发指南 从零基础到App Store上架(第3版)
关东升 著
iOS开发指南:从Hello World到App Store上架(第4版)
JavaScript设计模式与开发实践
曾探 著
iOS开发指南:从Hello World到App Store上架(第4版)
腾云:—云计算和大数据时代网络技术揭秘
徐立冰 著
iOS开发指南:从Hello World到App Store上架(第4版)
深入React技术栈
陈屹 著
iOS开发指南:从Hello World到App Store上架(第4版)
Docker 容器与容器云(第2版)
浙江大学SEL实验室 著
相关图书 / 更多
iOS开发指南:从Hello World到App Store上架(第4版)
iOS黑客攻防秘籍 第2版
陈德
iOS开发指南:从Hello World到App Store上架(第4版)
iOS编程(第6版)
[美]Aaron Hillegass 著;王凤全 译;[美]Christian Keur
iOS开发指南:从Hello World到App Store上架(第4版)
iOS开发基础教程(Swift版)(第2版)
陈志峰;田英;翟高粤
iOS开发指南:从Hello World到App Store上架(第4版)
iOS开发案例教程(swift版)
孙志敏 田英
iOS开发指南:从Hello World到App Store上架(第4版)
iOS应用开发教程(微课视频版)
罗良夫
iOS开发指南:从Hello World到App Store上架(第4版)
iOS全埋点解决方案
王灼洲 著
iOS开发指南:从Hello World到App Store上架(第4版)
iOS 14开发指南
管蕾
iOS开发指南:从Hello World到App Store上架(第4版)
iOS应用逆向与安全之道
罗巍 著
iOS开发指南:从Hello World到App Store上架(第4版)
iOS项目开发实战(高等职业教育移动互联应用技术专业教材)
赵善龙 、刘俊驰 主编
iOS开发指南:从Hello World到App Store上架(第4版)
iOS开发基础入门与实战
张运生 著;郭敏强、蔡铁、郭敏强、蔡铁、张运生 编
iOS开发指南:从Hello World到App Store上架(第4版)
iOS面试一战到底
张益珲 著
iOS开发指南:从Hello World到App Store上架(第4版)
iOS程序员面试笔试真题库
蒋信厚 汪小发 楚秦