产品特色
编辑推荐
畅销书全新升级,累计印数60000册
Swift和Objective-C双语讲解
新增通过代码构建界面、UI测试、AFNetworking和Alamofire、CocoaPods和Carthage等
数百个项目案例+两个真实项目开发全过程
涵盖iOS平台架构设计、测试驱动开发、性能优化、版本控制和程序调试等
内容简介
本书是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请求
iOS开发指南 从Hello World到App Store上架 第4版 下载 mobi epub pdf txt 电子书 格式