《iOS开发指南 从零基础到AppStore上架 第2版》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:关东升著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2014
  • ISBN:9787115348029
  • 页数:699 页
图书介绍:本书共分为四个部分:第一部分为基础篇,介绍了iOS的一些基础知识;第二部分为网络篇,介绍了iOS网络开发相关的知识;第三部分为进阶篇,介绍了iOS高级内容、商业思考等;第四部分为实战篇,从无到有地介绍了几个真实的iOS应用,如MyNotes应用和2016里约热内卢奥运会应用,带领读者身临其境地完成一个项目的开发,了解整个开发过程,掌握开发中的实用技巧。

第一部分 基础篇 2

第1章 开篇综述 2

1.1 iOS概述 2

1.1.1 iOS介绍 2

1.1.2 iOS 7新特性 2

1.2开发环境及开发工具 3

1.3本书中的约定 4

1.3.1案例代码约定 5

1.3.2图示的约定 5

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

2.1创建HelloWorld工程 7

2.1.1创建工程 7

2.1.2 Xcode中的iOS工程模板 12

2.1.3应用剖析 13

2.2 HelloWorld工程中故事板文件Main.storyboard 16

2.2.1故事板的导航特点 16

2.2.2故事板中的Scene和Segue 17

2.3应用生命周期 17

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

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

2.3.3挂起重新运行场景 21

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

2.4视图生命周期 22

2.4.1视图生命周期与视图控制器关系 23

2.4.2 iOS UI状态保持和恢复 24

2.5设置产品属性 26

2.5.1 Xcode中的Project和Target 26

2.5.2设置常用的产品属性 28

2.6 iOS API简介 30

2.6.1 API概述 30

2.6.2如何使用API帮助 32

2.7小结 34

第3章 UIView与控件 35

3.1视图“始祖”——UIView 35

3.1.1 UIview“家族” 35

3.1.2应用界面的构建层次 37

3.1.3视图分类 38

3.2标签控件和按钮控件 38

3.2.1标签控件 39

3.2.2按钮控件 39

3.2.3动作和输出口 41

3.3 TextField控件和TextView控件 43

3.3.1 TextField控件 44

3.3.2 TextView控件 44

3.3.3键盘的打开和关闭 45

3.3.4关闭和打开键盘的通知 46

3.3.5键盘的种类 47

3.4开关控件、滑块控件和分段控件 48

3.4.1开关控件 49

3.4.2滑块控件 49

3.4.3分段控件 49

3.5网页控件WebView 50

3.5.1 WebView介绍 50

3.5.2使用WebView构建Hybrid应用 53

3.6屏幕滚动控件ScrollView 58

3.6.1 ScrollView属性的设置 58

3.6.2键盘与其他控件的协同 63

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

3.7.1活动指示器ActivityIndicatorView 66

3.7.2进度条ProgressView 66

3.8警告框和操作表 67

3.8.1警告框AlertView 67

3.8.2操作表ActionSheet 69

3.9工具栏和导航栏 70

3.9.1工具栏 70

3.9.2导航栏 73

3.10屏幕布局 77

3.10.1 iPad、iPhone和iPhone 5屏幕布局 77

3.10.2绝对布局和相对布局 78

3.10.3使用AutoLayout布局 80

3.10.4旋转你的屏幕 82

3.11选择器 86

3.11.1日期选择器 86

3.11.2普通选择器 88

3.11.3数据源协议与委托协议 90

3.12集合视图 92

3.12.1集合视图介绍 92

3.12.2集合视图单元格 94

3.12.3数据源协议与委托协议 97

3.13小结 97

第4章 表视图 98

4.1概述 98

4.1.1表视图的组成 98

4.1.2表视图的相关类 99

4.1.3表视图分类 100

4.1.4单元格的组成和样式 103

4.1.5数据源协议与委托协议 105

4.2简单表视图 106

4.2.1创建简单表视图 106

4.2.2自定义单元格 110

4.2.3添加搜索栏 114

4.3分节表视图 119

4.3.1添加索引 119

4.3.2分组与静态表 122

4.4修改单元格 126

4.4.1删除和插入单元格 126

4.4.2移动单元格 132

4.5表视图UI设计模式 134

4.5.1分页模式 134

4.5.2下拉刷新模式 134

4.5.3 iOS 7下拉刷新控件 135

4.6小结 137

第5章 视图控制器与导航模式 138

5.1概述 138

5.1.1视图控制器的种类 138

5.1.2导航模式 138

5.1.3模态视图 139

5.2平铺导航 145

5.2.1应用场景 145

5.2.2基于分屏导航的实现 147

5.2.3基于分页导航的实现 150

5.3标签导航 156

5.3.1应用场景 157

5.3.2实现 157

5.4树形结构导航 159

5.4.1应用场景 160

5.4.2实现 161

5.5组合使用导航模式 165

5.5.1应用场景 166

5.5.2实现 166

5.6小结 173

第6章 iOS常用设计模式 174

6.1单例模式 174

6.1.1问题提出 174

6.1.2实现原理 174

6.1.3应用案例 175

6.2委托模式 177

6.2.1问题提出 177

6.2.2实现原理 178

6.2.3应用案例 181

6.3观察者模式 184

6.3.1问题提出 184

6.3.2实现原理 185

6.3.3通知机制和KVO机制 187

6.4 MVC模式 193

6.4.1 MVC模式概述 193

6.4.2 Cocoa Touch中的MVC模式 194

6.5小结 196

第7章 iPhone与iPad应用开发的差异 197

7.1概述 197

7.1.1应用场景差异 197

7.1.2设计和开发需注意的问题 197

7.1.3构建自适应的iPhone和iPad工程 200

7.2 iPad专用API 202

7.2.1 UIPopoverController控制器 202

7.2.2 UISplitViewController控制器 205

7.2.3模态视图专用属性 211

7.3小结 215

第8章 iOS分层架构设计 216

8.1低耦合企业级系统架构设计 216

8.2 iOS分层架构设计 217

8.2.1基于同一工程的分层 217

8.2.2基于一个工作空间不同工程的分层 222

8.3小结 227

第9章 iOS 7中文字排版和渲染引擎——Text Kit 228

9.1 Text Kit基础 228

9.1.1文字的排版和渲染 228

9.1.2 Text Kit架构 228

9.1.3 Text Kit中的核心类 229

9.1.3实例:凸版印刷效果 231

9.2文字图片混合排版 233

9.3动态字体 236

9.4小结 239

第10章 应用程序设置 240

10.1概述 240

10.1.1设置 240

10.1.2配置 241

10.2应用程序设置包 243

10.3设置项目种类 244

10.3.1文本字段 247

10.3.2开关 249

10.3.3滑块 250

10.3.4值列表 252

10.3.5子界面 253

10.4读取设置 255

10.5小结 256

第11章 国际化 257

11.1概述 257

11.1.1需要国际化的内容 257

11.1.2国际化目录结构 259

11.2文本信息国际化 260

11.2.1系统按钮和信息国际化 260

11.2.2应用名称国际化 261

11.2.3程序代码输出的静态文本国际化 263

11.2.4使用genstring工具 265

11.3 xib和故事板文件国际化 266

11.3.1使用Base国际化技术 266

11.3.2 AutoLayout与国际化 268

11.4资源文件国际化 270

11.4.1图片资源文件国际化 270

11.4.2声音资源文件国际化 271

11.5小结 271

第12章 数据持久化 272

12.1概述 272

12.1.1沙箱目录 272

12.1.2持久化方式 273

12.2属性列表 273

12.3对象归档 278

12.4使用SQLite数据库 282

12.4.1 SQLite数据类型 283

12.4.2创建数据库 283

12.4.3查询数据 285

12.4.4修改数据 288

12.5 Core Data 290

12.5.1 ORM 290

12.5.2 Core Data堆栈 290

12.5.3建模和生成实体 294

12.5.4采用Core Data分层架构设计 297

12.5.5查询数据 298

12.5.6修改数据 300

12.6小结 301

第13章 访问通讯录 302

13.1概述 303

13.2读取联系人信息 303

13.2.1查询联系人记录 304

13.2.2读取单值属性 306

13.2.3读取多值属性 308

13.2.4读取图片属性 310

13.3写入联系人信息 310

13.3.1创建联系人 312

13.3.2修改联系人 314

13.3.3删除联系人 315

13.4高级API 316

13.4.1选择联系人 316

13.4.2显示和修改联系人 319

13.4.3创建联系人 322

13.5小结 325

第二部分 网络篇 328

第14章 访问 Web Service 328

14.1概述 328

14.2数据交换格式 328

14.2.1XML文档结构 330

14.2.2解析XML文档 331

14.2.3 JSON文档结构 338

14.2.4 JSON数据解码 339

14.3 REST Web Service 341

14.3.1 HTTP和HTTPS协议 341

14.3.2同步GET请求方法 342

14.3.3异步GET请求方法 346

14.3.4 POST请求方式 347

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

14.4使用轻量级网络请求框架MKNetworkKit 352

14.4.1 ASIHTTPRequest、AFNetworking和MKNetworkKit比较 353

14.4.2安装和配置MKNetworkKit框架 353

14.4.3网络请求 354

14.4.4下载数据 356

14.4.5上传数据 358

14.5反馈网络信息改善用户体验 359

14.5.1使用下拉刷新控件改善用户体验 359

14.5.2使用等待指示器控件 362

14.5.3使用网络等待指示器 365

14.6小结 366

第15章 定位服务与地图应用 367

15.1定位服务 367

15.1.1定位服务编程 368

15.1.2地理信息反编码 372

15.1.3地理信息编码查询 373

15.1.4关于定位服务的测试 375

15.2使用iOS苹果地图 378

15.2.1显示地图 378

15.2.2添加标注 380

15.2.3跟踪用户位置变化 383

15.3使用程序外地图 384

15.3.1调用iOS苹果地图 384

15.3.2调用谷歌Web地图 387

15.4小结 388

第三部分 进阶篇 390

第16章 升级? 390

16.1从iOS 6到iOS 7的升级 390

16.1.1 iOS 7全新的扁平化设计 391

16.1.2屏幕适配问题 394

16.1.3 iOS 7状态栏隐藏 396

16.1.4 iOS 7状态栏样式设置 397

16.2从Xcode 4到Xcode 5的升级 399

16.2.1 ARC与MRC之争 399

16.2.2故事板与xib之争 402

16.2.3找回普通显示屏的模拟器 407

16.2.4找回老版本的Interface Builder 408

16.2.5使用资源目录管理图片 409

16.3从iPhone 4到iPhone 5的升级 412

16.3.1屏幕适配问题 413

16.3.2从32位到64位的升级 416

16.4小结 417

第17章 iOS中的商业模式 418

17.1收费策略 418

17.1.1 iOS如何赚钱 418

17.1.2避免定价策略误区 419

17.1.3免费软件的艺术 419

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

17.1.5尝试不同的盈利模式 419

17.2使用苹果iAd广告 420

17.2.1横幅广告 420

17.2.2插页广告 425

17.2.3查看你的收入 430

17.3使用谷歌AdMob广告 432

17.3.1注册AdMob账号和管理应用 432

17.3.2下载谷歌AdMob Ads SDK和示例代码 435

17.3.3添加AdMob横幅广告 437

17.3.4添加AdMob插页广告 442

17.3.5为广告提交用户和位置信息 445

17.3.6搜索广告 446

17.3.7查看你的收入 448

17.4应用内购买 449

17.4.1概述 449

17.4.2测试环境搭建 450

17.4.3在程序中实现应用内购买 455

17.4.4测试应用内购买 461

17.5小结 463

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

18.1 Xcode调试工具 464

18.1.1定位编译错误 464

18.1.2查看和显示日志 465

18.1.3设置和查看断点 466

18.1.4调试工具栏 470

18.1.5输出窗口 471

18.1.6变量查看窗口 473

18.1.7查看线程 474

18.2日志与断言输出 475

18.2.1使用NSLog函数 475

18.2.2使用NSAssert宏 476

18.2.3移除NSLog和NSAssert 477

18.3 LLDB调试工具 479

18.3.1断点命令 480

18.3.2观察点命令 482

18.3.3查看变量和计算表达式命令 483

18.4异常堆栈报告分析 485

18.4.1跟踪异常堆栈 485

18.4.2分析堆栈报告 488

18.5在iOS设备上调试 488

18.5.1创建开发者证书 489

18.5.2设备注册 493

18.5.3创建App ID 495

18.5.4创建配置概要文件 497

18.5.5设备调试 501

18.6 Xcode设备管理工具 502

18.6.1管理设备配置概要文件 503

18.6.2查看设备上的应用程序 504

18.6.3设备控制台 505

18.6.4设备日志 505

18.7小结 506

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

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

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

19.1.2测试驱功的软件开发案例 508

19.1.3 iOS 7单元测试框架 513

19.2使用XCTest测试框架 513

19.2.1添加XCTest到工程 514

19.2.2编写XCTest测试方法 515

19.2.3运行测试程序 521

19.2.4分析测试报告 521

19.3 iOS单元测试最佳实践 523

19.3.1测试数据持久层 523

19.3.2测试业务逻辑层 527

19.3.3测试表示层 529

19.4小结 531

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

20.1内存优化 532

20.1.1内存泄漏问题的解决 532

20.1.2查找和解决僵尸对象 540

20.1.3 autorelease的使用问题 543

20.1.4响应内存警告 543

20.1.5选择xib还是故事板 545

20.2优化资源文件 545

20.2.1图片文件优化 546

20.2.2音频文件优化 548

20.3延迟加载 549

20.3.1资源文件的延迟加载 549

20.3.2故事板和xib文件的延迟加载 553

20.4数据持久化的优化 555

20.4.1使用文件 555

20.4.2使用SQLite数据库 559

20.4.3使用Core Data 560

20.5可重用对象的使用 562

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

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

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

20.6并发处理与多核CPU 565

20.6.1主线程阻塞问题 566

20.6.2选择NSThread还是GCD 566

20.7编译参数 568

20.8小结 569

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

21.1概述 570

21.1.1版本控制历史 570

21.1.2基本概念 571

21.2 Git代码版本控制 571

21.2.1服务器搭建 571

21.2.2 Gitolite服务器管理 573

21.2.3 Git常用命令 575

21.2.4 Git分支 577

21.2.5 Git协同开发 581

21.2.6 Xcode 5中Git的配置与使用 583

21.3 GitHub代码托管服务 590

21.3.1创建和配置GitHub账号 590

21.3.2创建代码库 592

21.3.3派生代码库 595

21.3.4使用GitHub协同开发 597

21.3.5管理组织 601

21.4小结 605

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

22.1收官 606

22.1.1在Xcode 5下添加图标 606

22.1.2 Xcode 5添加启动界面 608

22.1.3 调整Identity和Deployment Info属性 611

22.1.4为发布进行编译 612

22.1.5应用打包 618

22.2发布流程 619

22.2.1创建应用及基本信息 620

22.2.2应用定价信息 621

22.2.3最后的信息输入 622

22.2.4上传应用 625

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

22.4小结 628

第四部分 实战篇 630

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

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

23.2基于委托模式实现 631

23.2.1网络通信与委托模式 631

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

23.2.3类图 632

23.2.4时序图 634

23.2.5数据持久层重构 637

23.2.6业务逻辑层的代码实现 640

23.2.7表示层的代码实现 642

23.3基于观察者模式的通知机制实现 646

23.3.1观察者模式的通知机制回顾 646

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

23.3.3类图 647

23.3.4时序图 648

23.3.5数据持久层的重构 651

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

23.3.7表示层的代码实现 653

23.4小结 658

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

24.1应用分析与设计 659

24.1.1应用概述 659

24.1.2需求分析 659

24.1.3原型设计 660

24.1.4数据库设计 660

24.1.5架构设计 662

24.2 iOS敏捷开发 662

24.2.1敏捷开发宣言 662

24.2.2 iOS适合敏捷开发吗 663

24.2.3 iOS敏捷开发最佳实践 663

24.3任务1:创建应用基本工作空间 665

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

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

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

24.4.3迭代2.3:编写实体类 667

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

24.4.5迭代2.5:编写DAO类 672

24.4.6迭代2.6:发布到GitHub 676

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

24.5.1迭代3.1:比赛项目业务逻辑类XCTest单元测试 676

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

24.5.3迭代3.3:比赛日程业务逻辑类XCTest单元测试 678

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

24.5.5迭代3.5:发布到GitHub 681

24.6任务4:表示层开发 681

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

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

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

24.6.4迭代4.4:首页模块 684

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

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

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

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

24.6.9迭代4.9:发布到GitHub 694

24.7任务5:收工 694

24.7.1迭代5.1:添加图标 695

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

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

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

24.7.5迭代5.5:发布到GitHub 697

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

24.8小结 699