关东升《iOS开发指南 从零基础到App Store上架(第3版)》

关东升《iOS开发指南 从零基础到App Store上架(第3版)》

作者:关东升

出版社:人民邮电出版社

出版年:2015-4-1

评分:6.7

ISBN:9787115387769

所属分类:网络科技

书刊介绍

内容简介

关东升

智捷课堂创始人,国内知名iOS技术作家,iOS技术顾问,高级培训讲师,移动开发专家。担任51CTO社区iOS技术顾问,精通iOS、Android和Windows Phone及HTML5等移动开发技术。曾先后主持开发大型网络游戏《神农诀》的iOS和Android客户端开发,国家农产品追溯系统的iPad客户端开发,酒店预订系统的iPhone客户端开发,金融系统微博的iOS、Windows Phone 及Android客户端开发。在App Store上发布多款游戏和应用软件,擅长移动平台的应用和游戏类项目开发。长期为中国移动研究院、云南移动、东软、方正科技、惠普、NTT、深圳康拓普、上海财富168、天津港务局、福州软件园、广州软件园等企事业单位授课。除本书外,还著有《Swift开发指南》《iOS网络编程与云端应用最佳实践》《iOS传感器应用开发最佳实践》《iOS图形图像、动画和多媒体编程技术最佳实践》《iPhone与iPad开发实战——iOS经典应用剖析》《品味移动设计》《交互设计的艺术》《Android开发案例驱动教程》、《Android网络游戏开发实战》,以及《Cocos2d-x实战》系列丛书等。

作品目录

第一部分 基础篇

第1章 开篇综述2

1.1 iOS概述2

1.1.1 iOS介绍2

1.1.2 iOS 8的新特性2

1.2 开发环境及开发工具3

1.3 本书中的约定4

1.3.1 案例代码约定4

1.3.2 图示的约定5

1.3.3 方法命名约定6

1.3.4 构造器命名约定7

第2章 第一个iOS应用程序9

2.1 创建HelloWorld工程9

2.1.1 创建工程9

2.1.2 Xcode中的iOS工程模板14

2.1.3 应用剖析15

2.2 HelloWorld工程中的故事板文件17

2.2.1 故事板的导航特点17

2.2.2 故事板中的Scene和Segue19

2.3 应用生命周期19

2.3.1 非运行状态——应用启动场景21

2.3.2 点击Home键——应用退出场景22

2.3.3 挂起重新运行场景24

2.3.4 内存清除——应用终止场景25

2.4 视图生命周期25

2.5 设置产品属性27

2.5.1 Xcode中的PROJECT和TARGET27

2.5.2 设置常用的产品属性29

2.6 iOS API简介30

2.6.1 API概述31

2.6.2 如何使用API帮助33

2.7 小结36

第3章 UIView与视图37

3.1 视图“始祖”——UIView37

3.1.1 UIView“家族”37

3.1.2 应用界面的构建层次39

3.1.3 视图分类40

3.2 标签与按钮40

3.2.1 标签控件41

3.2.2 按钮控件42

3.3 动作与输出口44

3.4 TextField和TextView48

3.4.1 TextField控件48

3.4.2 TextView控件49

3.4.3 键盘的打开和关闭50

3.4.4 关闭和打开键盘的通知50

3.4.5 键盘的种类51

3.5 开关控件、滑块控件和分段控件52

3.5.1 开关控件53

3.5.2 滑块控件53

3.5.3 分段控件54

3.6 网页视图WebView54

3.7 等待相关的控件与进度条57

3.7.1 活动指示器ActivityIndicatorView58

3.7.2 进度条ProgressView59

3.8 警告框和操作表60

3.8.1 警告框60

3.8.2 操作表ActionSheet62

3.8.3 使用iOS 8 UIAlertController实现63

3.9 工具栏和导航栏64

3.9.1 工具栏64

3.9.2 导航栏67

3.10 小结70

第4章 iOS 8多分辨率屏幕适配71

4.1 iOS 8屏幕的多样性71

4.1.1 iOS 8屏幕介绍71

4.1.2 iOS 8的三种分辨率72

4.1.3 获得iOS设备屏幕信息73

4.2 iOS屏幕布局74

4.2.1 iOS中的“栏”74

4.2.2 传统布局75

4.3 Auto Layout布局77

4.3.1 在Interface Builder中管理Auto Layout约束77

4.3.2 实例:Auto Layout布局78

4.4 Size Class与iOS 8多屏幕适配83

4.4.1 在Interface Builder中使用Size Class83

4.4.2 Size Class的九宫格84

4.4.3 实例:使用Size Class85

4.5 在屏幕滚动视图中使用Auto Layout和Size Class90

4.5.1 屏幕滚动视图的重要属性90

4.5.2 屏幕滚动视图实例92

4.6 使用资源目录(asset catalog)管理图片97

4.7 小结100

第5章 委托协议、数据源协议与高级视图101

5.1 视图中的委托协议和数据源协议101

5.2 选择器101

5.2.1 日期选择器101

5.2.2 普通选择器103

5.2.3 数据源协议与委托协议106

5.3 集合视图108

5.3.1 集合视图介绍108

5.3.2 实例:奥运会比赛项目109

5.3.3 添加集合视图控制器110

5.3.4 添加集合视图单元格113

5.3.5 数据源协议与委托协议116

5.4 小结117

第6章 表视图118

6.1 概述118

6.1.1 表视图的组成118

6.1.2 表视图的相关类119

6.1.3 表视图分类119

6.1.4 单元格的组成和样式121

6.1.5 数据源协议与委托协议123

6.2 简单表视图123

6.2.1 创建简单表视图123

6.2.2 自定义单元格128

6.2.3 添加搜索栏131

6.3 分节表视图137

6.3.1 添加索引137

6.3.2 分组140

6.3.3 静态表与控制界面布局141

6.4 修改单元格144

6.4.1 删除和插入单元格144

6.4.2 移动单元格151

6.5 表视图UI设计模式153

6.5.1 分页模式153

6.5.2 下拉刷新模式154

6.5.3 下拉刷新控件154

6.6 小结157

第7章 视图控制器与导航模式158

7.1 概述158

7.1.1 视图控制器的种类158

7.1.2 导航模式158

7.1.3 模态视图160

7.2 平铺导航166

7.2.1 应用场景166

7.2.2 基于分屏导航的实现168

7.2.3 基于电子书导航的实现173

7.3 标签导航178

7.3.1 应用场景178

7.3.2 实现179

7.4 树形结构导航182

7.4.1 应用场景182

7.4.2 实现183

7.5 组合使用导航模式190

7.5.1 应用场景190

7.5.2 实现191

7.6 小结198

第8章 iOS常用设计模式199

8.1 单例模式199

8.1.1 问题提出199

8.1.2 Objective-C实现原理199

8.1.3 Swift实现原理200

8.1.4 应用案例201

8.2 委托模式202

8.2.1 问题提出202

8.2.2 实现原理204

8.2.3 应用案例207

8.3 观察者模式211

8.3.1 问题提出211

8.3.2 实现原理211

8.3.3 通知机制和KVO机制212

8.4 MVC 模式218

8.4.1 MVC模式概述218

8.4.2 Cocoa Touch中的MVC模式219

8.5 小结221

第9章 iPhone与iPad应用开发的差异222

9.1 概述222

9.1.1 应用场景差异222

9.1.2 设计和开发需注意的问题222

9.2 iPad专用API225

9.2.1 UIPopoverController控制器225

9.2.2 UISplitViewController控制器229

9.3 小结234

第10章 iOS分层架构设计235

10.1 低耦合企业级系统架构设计235

10.2 iOS分层架构设计236

10.2.1 工程与工作空间236

10.2.2 静态链接库237

10.2.3 框架237

10.2.4 10种分层模式238

10.3 实例:MyNotes应用238

10.4 基于同一工程的分层240

10.4.1 采用纯Swift语言实现——PSSS模式240

10.4.2 采用纯Objective-C语言实现——POOO模式243

10.4.3 采用Swift与Objective-C混合搭配实现——PSOO模式247

10.5 基于同一工作空间静态链接库实现的WLSOO模式247

10.5.1 使用工作空间247

10.5.2 添加数据持久层工程248

10.5.3 建立业务逻辑层与数据持久层的依赖关系249

10.5.4 建立表示层与业务逻辑层的依赖关系251

10.6 基于同一工作空间框架实现的WFSSS模式251

10.6.1 创建框架工程251

10.6.2 依赖关系建立253

10.6.3 代码重构254

10.7 基于同一工作空间框架实现的WFOOO模式255

10.7.1 设置Public头文件255

10.7.2 建立表示层与业务逻辑层的依赖关系256

10.7.3 代码重构256

10.8 基于同一工作空间框架实现的WFSOO模式256

10.8.1 设置Public头文件256

10.8.2 建立表示层与业务逻辑层的依赖关系257

10.8.3 代码重构257

10.9 基于同一工作空间框架实现的WFOSS模式258

10.9.1 设置Public头文件258

10.9.2 代码重构258

10.10 小结258

第11章 数据持久化259

11.1 概述259

11.1.1 沙箱目录259

11.1.2 持久化方式260

11.2 属性列表260

11.3 对象归档264

11.4 使用SQLite数据库268

11.4.1 SQLite数据类型268

11.4.2 创建数据库269

11.4.3 查询数据271

11.4.4 修改数据273

11.5 Core Data276

11.5.1 ORM276

11.5.2 Core Data堆栈276

11.5.3 建模和生成实体280

11.5.4 采用Core Data分层架构设计283

11.5.5 查询数据285

11.5.6 修改数据286

11.6 小结288

第12章 应用程序设置289

12.1 概述289

12.1.1 设置289

12.1.2 配置290

12.2 应用程序设置包291

12.3 设置项目种类293

12.3.1 文本字段295

12.3.2 开关298

12.3.3 滑块299

12.3.4 值列表300

12.3.5 子界面301

12.4 读取设置303

12.5 小结304

第13章 国际化305

13.1 概述305

13.1.1 需要国际化的内容305

13.1.2 国际化目录结构307

13.2 文本信息国际化308

13.2.1 系统按钮和信息国际化308

13.2.2 应用名称国际化309

13.2.3 程序代码输出的静态文本国际化311

13.2.4 使用genstring工具312

13.3 xib和故事板文件国际化313

13.3.1 使用Base国际化技术313

13.3.2 Auto Layout与国际化315

13.4 资源文件国际化317

13.4.1 图片资源文件国际化317

13.4.2 声音资源文件国际化318

13.5 小结318

第14章 访问联系人319

14.1 概述319

14.2 读取联系人信息320

14.2.1 查询联系人记录321

14.2.2 读取单值属性324

14.2.3 读取多值属性326

14.2.4 读取图片属性328

14.3 写入联系人信息329

14.3.1 创建联系人330

14.3.2 修改联系人332

14.3.3 删除联系人333

14.4 高级API335

14.4.1 选择联系人335

14.4.2 显示和修改联系人336

14.4.3 创建联系人339

14.5 小结342

第二部分 网络篇

第15章 访问Web Service344

15.1 概述344

15.2 数据交换格式344

15.2.1 XML文档结构346

15.2.2 解析XML文档347

15.2.3 JSON文档结构355

15.2.4 JSON数据解码356

15.3 REST Web Service357

15.3.1 HTTP和HTTPS协议358

15.3.2 同步GET请求方法358

15.3.3 异步GET请求方法361

15.3.4 POST请求方法362

15.3.5 调用REST Web Service的插入、修改和删除方法363

15.4 使用轻量级网络请求框架MKNetworkKit368

15.4.1 ASIHTTPRequest、AFNetworking和MKNetworkKit比较368

15.4.2 安装和配置MKNetworkKit框架369

15.4.3 网络请求370

15.4.4 下载数据371

15.4.5 上传数据373

15.5 反馈网络信息改善用户体验375

15.5.1 使用下拉刷新控件改善用户体验375

15.5.2 使用活动指示器控件378

15.5.3 使用网络活动指示器380

15.6 小结380

第16章 定位服务与地图应用381

16.1 定位服务381

16.1.1 定位服务编程382

16.1.2 地理信息反编码386

16.1.3 地理信息编码查询388

16.1.4 关于定位服务的测试390

16.2 使用iOS苹果地图393

16.2.1 显示地图393

16.2.2 添加标注395

16.2.3 跟踪用户位置变化398

16.3 使用程序外地图399

16.3.1 调用iOS苹果地图400

16.3.2 调用谷歌Web地图402

16.4 小结404

第三部分 进阶篇

第17章 iOS中的商业模式406

17.1 收费策略406

17.1.1 iOS如何赚钱406

17.1.2 避免定价策略误区406

17.1.3 免费软件的艺术407

17.1.4 在适当的时间、适当的地点植入广告407

17.1.5 尝试不同的盈利模式407

17.2 使用苹果iAd 广告408

17.2.1 横幅广告408

17.2.2 插页广告411

17.2.3 查看你的收入417

17.3 使用谷歌AdMob广告419

17.3.1 注册AdMob账号419

17.3.2 管理AdMob广告419

17.3.3 AdMob广告类型422

17.3.4 下载AdMob Ads SDK423

17.3.5 配置AdMob开发环境424

17.3.6 AdMob横幅广告426

17.3.7 添加AdMob插页广告428

17.3.8 为广告提交用户和位置信息431

17.3.9 搜索广告431

17.4 小结433

第18章 找出程序中的bug——调试434

18.1 Xcode调试工具434

18.1.1 定位编译错误434

18.1.2 查看和显示日志435

18.1.3 设置和查看断点437

18.1.4 调试工具442

18.1.5 输出窗口443

18.1.6 变量查看窗口444

18.1.7 查看线程445

18.2 日志与断言输出446

18.2.1 使用NSLog函数446

18.2.2 使用断言447

18.3 异常堆栈报告分析448

18.3.1 跟踪异常堆栈448

18.3.2 分析堆栈报告450

18.4 在iOS设备上调试450

18.4.1 创建开发者证书451

18.4.2 设备注册455

18.4.3 创建App ID456

18.4.4 创建配置概要文件459

18.4.5 设备调试460

18.5 Xcode设备管理工具461

18.5.1 查看设备上的应用程序462

18.5.2 设备日志464

18.6 小结464

第19章 测试驱动下的iOS应用开发465

19.1 测试驱动的软件开发概述465

19.1.1 测试驱动的软件开发流程465

19.1.2 测试驱动的软件开发案例466

19.1.3 iOS单元测试框架467

19.2 使用XCTest测试框架468

19.2.1 添加XCTest到工程468

19.2.2 编写XCTest测试方法469

19.2.3 运行测试程序472

19.2.4 分析测试报告473

19.3 异步单元测试475

19.4 性能测试478

19.4.1 配置测试环境478

19.4.2 测试代码479

19.4.3 分析测试结果480

19.5 iOS单元测试最佳实践481

19.5.1 测试数据持久层481

19.5.2 测试业务逻辑层485

19.6 小结486

第20章 让你的程序“飞”起来——性能优化487

20.1 内存优化487

20.1.1 内存管理487

20.1.2 使用Analyze和Instruments工具解决内存泄漏问题487

20.1.3 查找和解决僵尸对象494

20.1.4 autorelease的使用问题497

20.1.5 响应内存警告497

20.2 优化资源文件499

20.2.1 图片文件优化499

20.2.2 音频文件优化500

20.3 延迟加载501

20.3.1 资源文件的延迟加载501

20.3.2 故事板文件的延迟加载505

20.3.3 xib文件的延迟加载507

20.4 数据持久化的优化509

20.4.1 使用文件509

20.4.2 使用SQLite数据库513

20.4.3 使用Core Data514

20.5 可重用对象的使用516

20.5.1 表视图中的可重用对象516

20.5.2 集合视图中的可重用对象518

20.5.3 地图视图中的可重用对象519

20.6 并发处理与多核CPU520

20.6.1 主线程阻塞问题520

20.6.2 选择NSThread还是GCD521

20.7 小结521

第21章 管理好你的程序代码——代码版本控制522

21.1 概述522

21.1.1 版本控制历史522

21.1.2 基本概念523

21.2 Git代码版本控制523

21.2.1 服务器搭建523

21.2.2 Gitolite服务器管理525

21.2.3 Git常用命令527

21.2.4 Git分支529

21.2.5 Git协同开发533

21.2.6 Xcode中Git的配置与使用535

21.3 GitHub代码托管服务542

21.3.1 创建和配置GitHub账号542

21.3.2 创建代码库544

21.3.3 删除代码库546

21.3.4 派生代码库546

21.3.5 使用GitHub协同开发549

21.3.6 管理组织555

21.4 小结558

第22章 把你的应用放到App Store上559

22.1 收官559

22.1.1 在Xcode 6中添加图标559

22.1.2 在Xcode 6中添加启动界面562

22.1.3 调整Identity和Deployment Info属性564

22.1.4 为发布进行编译567

22.2 发布流程571

22.2.1 创建应用572

22.2.2 基本信息输入574

22.2.3 应用定价577

22.2.4 上传应用577

22.2.5 提交审核579

22.3 常见审核不通过的原因581

22.3.1 功能问题581

22.3.2 用户界面问题581

22.3.3 商业问题581

22.3.4 不当内容581

22.3.5 其他问题582

22.4 小结582

第四部分 实战篇

第23章 重构MyNotes应用——iOS网络通信中的设计模式与架构设计584

23.1 移动网络通信应用的分层架构设计584

23.2 Objective-C版本:在工作空间中添加和配置MKNetworkKit585

23.3 基于委托模式实现587

23.3.1 网络通信与委托模式587

23.3.2 在异步网络通信中使用委托模式实现分层架构设计587

23.3.3 类图588

23.3.4 时序图591

23.3.5 数据持久层重构593

23.3.6 业务逻辑层的代码实现597

23.3.7 表示层的代码实现599

23.4 基于观察者模式的通知机制实现603

23.4.1 观察者模式的通知机制回顾603

23.4.2 异步网络通信中通知机制的分层架构设计604

23.4.3 类图605

23.4.4 时序图606

23.4.5 数据持久层的重构609

23.4.6 业务逻辑层的代码实现611

23.4.7 表示层的代码实现612

23.5 小结616

第24章 iOS敏捷开发项目实战——2016里约热内卢奥运会应用开发及App Store发布617

24.1 应用分析与设计617

24.1.1 应用概述617

24.1.2 需求分析617

24.1.3 原型设计618

24.1.4 数据库设计619

24.1.5 架构设计619

24.2 iOS敏捷开发620

24.2.1 敏捷开发宣言620

24.2.2 iOS适合敏捷开发?621

24.2.3 iOS敏捷开发最佳实践621

24.3 任务1:创建应用工作空间和工程623

24.3.1 迭代1.1:创建Swift版本的工程623

24.3.2 迭代1.2:创建Objective-C版本工作空间623

24.3.3 迭代1.3:发布到GitHub623

24.4 任务2:信息系统层与持久层开发624

24.4.1 迭代2.1:编写数据库DDL脚本624

24.4.2 迭代2.2:插入初始数据到数据库625

24.4.3 迭代2.3:编写实体类625

24.4.4 迭代2.4:DAO类XCTest单元测试626

24.4.5 迭代2.5:数据库帮助类DBHelper629

24.4.6 迭代2.5:编写DAO类632

24.4.7 迭代2.6:发布到GitHub635

24.5 任务3:业务逻辑层开发636

24.5.1 迭代3.1:对比赛项目业务逻辑类进行XCTest单元测试636

24.5.2 迭代3.2:编写比赛项目业务逻辑类637

24.5.3 迭代3.3:对比赛日程业务逻辑类进行XCTest单元测试638

24.5.4 迭代3.4:编写比赛日程业务逻辑类639

24.5.5 迭代3.5:发布到GitHub640

24.6 任务4:表示层开发641

24.6.1 迭代4.1:使用资源目录管理图片和图标资源641

24.6.2 迭代4.2:根据原型设计初步设计iPad故事板642

24.6.3 迭代4.3:根据原型设计初步设计iPhone故事板644

24.6.4 迭代4.4:首页模块644

24.6.5 迭代4.5:比赛项目模块645

24.6.6 迭代4.6:比赛日程模块649

24.6.7 迭代4.7:倒计时模块表示层652

24.6.8 迭代4.8:关于我们模块表示层653

24.6.9 迭代4.9:发布到GitHub654

24.7 任务5:收工654

24.7.1 迭代5.1:添加图标654

24.7.2 迭代5.2:设计和添加启动界面654

24.7.3 迭代5.3:植入谷歌AdMob横幅广告655

24.7.4 迭代5.4:性能测试与改善657

24.7.5 迭代5.5:发布到GitHub上658

24.7.6 迭代5.6:在App Store上发布应用658

24.8 小结658

相关推荐

微信二维码