《iOS开发指南 从零基础到App Store上架》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:关东升编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2013
  • ISBN:9787115324443
  • 页数:690 页
图书介绍:本书共4篇:第一部分为基础篇,介绍了iOS的一些基础知识;第二部分为网络篇,介绍了iOS网络开发相关的知识;第三部分为进阶篇,介绍了iOS高级内容、商业思考等;第四部分为实战篇,从无到有地介绍了两个真实的iOS应用:MyNotes应用和2016里约热内卢奥运会应用。书中包括了100多个完整的案例项目源代码,大家可以到本书网站http://www.iOSBook1.com下载。

第一部分 基础篇 2

第1章 开篇综述 2

1.1 iOS概述 2

1.1.1 iOS介绍 2

1.1.2 iOS 6断特性 2

1.2开发环境及开发工具 3

1.3本书中的约定 4

1.3.1案例代码约定 4

1.3.2图示的约定 5

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

2.1创建基于nib的HelloWorld工程 7

2.1.1创建工程 7

2.1.2 Xcode中的iOS工程模板 10

2.1.3应用剖析 11

2.2基于故事板的HelloWorld工程 13

2.2.1使用故事板重构HelloWorld 14

2.2.2 nib、 xib与故事板 15

2.2.3故事板中的Scene和Segue 16

2.3应用生命周期 17

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

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

2.3.3挂起重新运行场景 20

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

2.4视图生命周期 21

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

2.4.2 iOS 6 UI状态保持和恢复 23

2.5设置产品属性 25

2.5.1 Xcode中的Proj ect和Target 25

2.5.2设置常用的产品属性 27

2.6 iOS API简介 29

2.6.1 API概述 29

2.6.2如何使用API帮助 31

2.7小结 33

第3章iOS常用设计模式 34

3.1单例模式 34

3.1.1问题提出 34

3.1.2实现原理 34

3.1.3应用案例 35

3.2委托模式 37

3.2.1问题提出 37

3.2.2实现原理 39

3.2.3应用案例 41

3.3观察者模式 44

3.3.1问题提出 44

3.3.2实现原理 45

3.3.3通知机制和KVO机制 47

3.4 MVC模式 53

3.4.1 MVC模式概述 53

3.4.2 Cocoa Touch中的MVC模式 54

3.5小结 56

第4章UIView与控件 57

4.1视图“始祖”——UIView 57

4.1.1 UIView“家族” 57

4.1.2应用界面的构建层次 59

4.1.3视图分类 60

4.2标签控件和按钮控件 60

4.2.1标签控件 61

4.2.2按钮控件 61

4.2.3动作和输出口 63

4.3 TextField控件和TextV iew控件 66

4.3.1 TextField控件 66

4.3.2 TextView控件 67

4.3.3键盘的打开和关闭 67

4.3.4关闭和打开键盘的通知 68

4.3.5键盘的种类 69

4.4开关控件、滑块控件和分段控件 70

4.4.1开关控件 71

4.4.2滑块控件 71

4.4.3分段控件 71

4.5网页控件WebView 72

4.5.1 WebView介绍 72

4.5.2使用WebView构建Hybrid应用 75

4.6屏幕滚动控件ScrollView 80

4.6.1 ScrollView属性的设置 80

4.6.2键盘与其他控件的协同 84

4.7等待相关的控件与进度条 86

4.7.1活动指示器ActivityIndicatorV iew 87

4.7.2进度条ProgressView 88

4.8警告框和操作表 88

4.8.1警告框AlertView 89

4.8.2操作表ActionSheet 90

4.9工具栏和导航栏 92

4.9.1工具栏 92

4.9.2导航栏 94

4.10屏幕布局 98

4.10.1 ipad与iPhone屏幕布局 98

4.10.2绝对布局和相对布局 99

4.10.3使用AutoLayout布局 102

4.10.4旋转你的屏幕 103

4.11选择器 108

4.11.1日期选择器 108

4.11.2普通选择器 110

4.11.3数据源协议与委托协议 112

4.12 iOS 6中的集合视图 113

4.12.1集合视图介绍 114

4.12.2集合视图单元格 116

4.12.3数据源协议与委托协议 118

4.13小结 119

第5章 表视图 120

5.1概述 120

5.1.1表视图的组成 120

5.1.2表视图的相关类 121

5.1.3表视图分类 122

5.1.4单元格的组成和样式 123

5.1.5数据源协议与委托协议 124

5.2简单表视图 125

5.2.1创建简单表视图 125

5.2.2自定义单元格 129

5.2.3添加搜索栏 133

5.3分节表视图 138

5.3.1添加索引 138

5.3.2分组与静态表 141

5.4修改单元格 144

5.4.1删除和插入单元格 144

5.4.2移动单元格 150

5.5表视图UI设计模式 152

5.5.1分页模式 152

5.5.2下拉刷新模式 152

5.5.3 iOS 6下拉刷新控件 153

5.6小结 155

第6章 视图控制器与导航模式 156

6.1概述 156

6.1.1视图控制器的种类 156

6.1.2导航模式 156

6.1.3模态视图 157

6.2平铺导航 163

6.2.1应用场景 163

6.2.2基于分屏导航的实现 165

6.2.3基于分页导航的实现 168

6.3标签导航 173

6.3.1应用场景 174

6.3.2 nib实现 174

6.3.3故事板实现 179

6.4树形结构导航 182

6.4.1应用场景 182

6.4.2 nib实现 183

6.4.3故事板实现 189

6.5组合使用导航模式 193

6.5.1应用场景 193

6.5.2故事板实现 194

6.6小结 200

第7章iphone与ipad应用开发的差异 201

7.1概述 201

7.1.1应用场景差异 201

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

7.1.3构建自适应的iphone和iPad工程 204

7.2 iPad专用API 206

7.2.1 UIPopoverController控制器 206

7.2.2 UISplitViewController控制器 209

7.2.3模态视图专用属性 215

7.3 Master-Detail应用程序模板 219

7.3.1 nib实现 220

7.3.2故事板实现 225

7.4 Utility应用程序模板 228

7.4.1 nib实现 229

7.4.2故事板实现 232

7.5移动平台的分层架构设计 234

7.5.1低耦合企业级系统架构设计 234

7.5.2移动平台的分层架构设计 235

7.5.3基于同一工程的分层 235

7.5.4基于一个工作空间不同工程的分层 241

7.6小结 244

第8章 应用程序设置 245

8.1概述 245

8.1.1设置 245

8.1.2配置 246

8.2应用程序设置包 247

8.3设置项目种类 248

8.3.1文本字段 251

8.3.2开关 253

8.3.3滑块 254

8.3.4值列表 256

8.3.5子界面 257

8.4读取设置 259

8.5小结 260

第9章 应用程序本地化 261

9.1概述 261

9.1.1本地化内容 261

9.1.2本地化目录结构 263

9.2文本信息本地化 263

9.2.1系统按钮和信息本地化 263

9.2.2应用名称本地化 265

9.2.3程序代码输出的静态文本本地化 266

9.2.4使用genstring工具 268

9.3 nib和故事板文件本地化 268

9.3.1添加本地化 269

9.3.2开关使用ibtool工具 270

9.4资源文件本地化 271

9.5小结 273

第10章 数据持久化 274

10.1概述 274

10.1.1沙箱目录 274

10.1.2持久化方式 275

10.2属性列表 275

10.3对象归档 280

10.4使用SQLite数据库 285

10.4.1 SQLite数据类型 285

10.4.2创建数据库 285

10.4.3查询数据 287

10.4.4修改数据 290

10.5 Core Data 292

10.5.1 ORM 292

10.5.2 Core Data堆栈 293

10.5.3建模和生成实体 296

10.5.4采用Core Data分层架构设计 299

10.5.5查询数据 301

10.5.6修改数据 302

10.6小结 304

第11章 访问通讯录 305

11.1概述 305

11.2读取联系人信息 306

11.2.1查询联系人记录 307

11.2.2读取单值属性 309

11.2.3读取多值属性 311

11.2.4读取图片属性 313

11.3写入联系人信息 313

11.3.1创建联系人 315

11.3.2修改联系人 317

11.3.3删除联系人 318

11.4高级API 319

11.4.1选择联系人 319

11.4.2显示和修改联系人 322

11.4.3创建联系人 324

11.5小结 328

第二部分 网络篇 330

第12章 访问Web Service 330

12.1概述 330

12.2数据交换格式 330

12.2.1 XML文档结构 332

12.2.2解析XML文档 333

12.2.3 JSON文档结构 340

12.2.4 JSON数据解码 341

12.3 REST Web Service 343

12.3.1 HTTP和HTTPS协议 343

12.3.2同步GET请求方法 344

12.3.3异步GET请求方法 348

12.3.4 POST请求方式 349

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

12.4使用ASIHTTPRequest框架 355

12.4.1安装和配置ASIHTTPRequest框架 355

12.4.2同步请求 356

12.4.3异步请求 358

12.4.4使用请求队列 359

12.4.5上传数据 362

12.5反馈网络信息改善用户体验 364

12.5.1 iOS 6表视图刷新控件的使用 364

12.5.2使用等待指示器控件 367

12.5.3使用网络等待指示器 369

12.6小结 370

第13章 定位服务与地图应用 371

13.1定位服务 371

13.1.1定位服务编程 371

13.1.2地理信息反编码 376

13.1.3地理信息编码查询 377

13.1.4关于定位服务的测试 379

13.2使用iOS 6苹果地图 382

13.2.1显示地图 382

13.2.2添加标注 384

13.2.3跟踪用户位置变化 387

13.3使用程序外地图 388

13.3.1调用iOS 6苹果地图 388

13.3.2调用谷歌Web地图 391

13.4小结 392

第三部分 进阶篇 394

第14章iOS中的商业模式 394

14.1收费策略 394

14.1.1 iOS如何赚钱 394

14.1.2避免定价策略误区 395

14.1.3免费软件的艺术 395

14.1.4在适当的时间、适当的地点植入广告 395

14.1.5尝试不同的盈利模式 395

14.2使用苹果iAd广告 396

14.2.1横幅广告 396

14.2.2插页广告 401

14.2.3查看你的收入 406

14.3使用谷歌AdMob广告 408

14.3.1注册AdMob账号和管理应用 408

14.3.2下载谷歌AdMob Ads SDK和示例代码 412

14.3.3添加AdMob横幅广告 414

14.3.4添加AdMob插页广告 418

14.3.5为广告提交用户和位置信息 421

14.3.6搜索广告 422

14.3.7查看你的收入 424

14.4应用内购买 425

14.4.1概述 425

14.4.2测试环境搭建 426

14.4.3在程序中实现应用内购买 431

14.4.4测试应用内购买 437

14.5小结 439

第15章 找出程序中的bug——调试 440

15.1 Xcode调试工具 440

15.1.1定位编译错误 440

15.1.2查看和显示日志 441

15.1.3设置和查看断点 442

15.1.4调试工具栏 446

15.1.5输出窗口 447

15.1.6变量查看窗口 448

15.1.7查看线程 449

15.2日志与断言输出 450

15.2.1使用NSLog函数 450

15.2.2使用NSAssert宏 451

15.2.3移除NSLog和NSAssert 452

15.3 LLDB调试工具 455

15.3.1断点命令 455

15.3.2观察点命令 457

15.3.3查看变量和计算表达式命令 458

15.4异常堆栈报告分析 461

15.4.1跟踪异常堆栈 461

15.4.2分析堆栈报告 463

15.5在iOS设备上调试 464

15.5.1创建开发者证书 465

15.5.2设备注册 468

15.5.3创建App ID 470

15.5.4创建配置概要文件 471

15.5.5设备调试 473

15.6 Xcode设备管理工具 474

15.6.1管理设备配置概要文件 474

15.6.2查看设备上的应用程序 475

15.6.3设备控制台 477

15.6.4设备日志 477

15.7小结 479

第16章 基于测试驱动的iOS开发 480

16.1测试驱动的软件开发概述 480

16.1.1测试驱动的软件开发流程 480

16.1.2测试驱动的软件开发案例 481

16.1.3 iOS单元测试框架 486

16.2使用OCUnit测试框架 486

16.2.1添加OCUnit到工程中 486

16.2.2应用测试和逻辑测试 489

16.2.3编写OCUnit测试方法 489

16.2.4分析测试报告 494

16.3使用GHUnit测试框架 495

16.3.1添加GHUnit到工程 496

16.3.2编写GHUnit测试用例 498

16.3.3分析测试报告 500

16.4使用伪对象 502

16.4.1添加OCMock到工程 503

16.4.2使用OCMock对象 505

16.5 iOS单元测试最佳实践 507

16.5.1 iOS单元测试策略 507

16.5.2测试数据持久层 507

16.5.3测试业务逻辑层 512

16.5.4测试表示层 515

16.6小结 522

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

17.1内存优化 523

17.1.1内存泄漏问题的解决 523

17.1.2查找和解决僵尸对象 531

17.1.3 autorelease的使用问题 534

17.1.4响应内存警告 534

17.1.5选择nib还是故事板 536

17.2优化资源文件 537

17.2.1图片文件优化 537

17.2.2音频文件优化 538

17.3延迟加载 539

17.3.1资源文件的延迟加载 540

17.3.2故事板和nib文件的延迟加载 543

17.4数据持久化的优化 546

17.4.1使用文件 546

17.4.2使用SQLite数据库 549

17.4.3使用Core Data 550

17.5可重用对象的使用 552

17.5.1表视图中的可重用对象 553

17.5.2集合视图中的可重用对象 554

17.5.3地图视图中的可重用对象 555

17.6并发处理与多核CPU 556

17.6.1主线程阻塞问题 556

17.6.2选择NSThread还是GCD 557

17.7编译器和编译参数 558

17.7.1 GCC、 LLVM GCC与Apple LLVM 比较 558

17.7.2 ARM架构 559

17.7.3 Optimization Level 561

17.8小结 562

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

18.1概述 563

18.1.1版本控制历史 563

18.1.2基本概念 564

18.2 Git代码版本控制 564

18.2.1服务器搭建 564

18.2.2 Gitolite服务器管理 566

18.2.3 Git常用命令 568

18.2.4 Git分支 570

18.2.5 Git协同开发 574

18.2.6 Xcode中Git的配置与使用 576

18.3 GitHub代码托管服务 583

18.3.1创建和配置GitHub账号 584

18.3.2创建代码库 586

18.3.3派生代码库 589

18.3.4使用GitHub协同开发 591

18.3.5管理组织 596

18.4小结 599

第19章 把你的应用放到App Store上 600

19.1收官 600

19.1.1添加图标 600

19.1.2添加启动界面 602

19.1.3调整Application Target属性 604

19.1.4为发布进行编译 605

19.1.5应用打包 609

19.2发布流程 610

19.2.1创建应用及基本信息 611

19.2.2应用定价信息 612

19.2.3最后信息输入 613

19.2.4上传应用 616

19.3常见审核不通过的原因 618

19.4小结 619

第四部分 实战篇 622

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

20.1移动网络通信应用的分层架构设计 622

20.2基于委托模式实现 623

20.2.1网络通信与委托模式 623

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

20.2.3类图 624

20.2.4时序图 626

20.2.5数据持久层的代码实现 629

20.2.6业务逻辑层的代码实现 631

20.2.7表示层的代码实现 632

20.3基于观察者模式的通知机制实现 637

20.3.1观察者模式的通知机制回顾 637

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

20.3.3类图 638

20.3.4时序图 639

20.3.5数据持久层的代码实现 642

20.3.6业务逻辑层的代码实现 643

20.3.7表示层的代码实现 644

20.4小结 649

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

21.1应用分析与设计 650

21.1.1应用概述 650

21.1.2需求分析 650

21.1.3原型设计 651

21.1.4数据库设计 652

21.1.5架构设计 652

21.2 iOS敏捷开发 653

21.2.1敏捷开发宣言 653

21.2.2 iOS适合敏捷开发? 654

21.2.3 iOS敏捷开发最佳实践 654

21.3任务1:创建应用基本工作空间 656

21.4任务2:信息系统层与持久层开发 657

21.4.1迭代2.1:编写数据库DDL脚本 657

21.4.2迭代2.2:插入初始数据到数据库 658

21.4.3迭代2.3:编写实体类 658

21.4.4迭代2.4: DAO类GHUnit单元测试 659

21.4.5迭代2.5:编写DAO类 663

21.4.6迭代2.6:发布到GitHub 666

21.5任务3:业务逻辑层开发 667

21.5.1迭代3.1:比赛项目业务逻辑类GHUnit单元测试 667

21.5.2迭代3.2:编写比赛项目业务逻辑类 668

21.5.3迭代3.3:比赛日程业务逻辑类GHUnit单元测试 669

21.5.4迭代3.4:编写比赛日程业务逻辑类 670

21.5.5迭代3.5:发布到GitHub 672

21.6任务4:表示层开发 672

21.6.1迭代4.1:根据原型设计初步设计ipad故事板 673

21.6.2迭代4.2:根据原型设计初步设计iPhone故事板 674

21.6.3迭代4.3:首页模块 674

21.6.4迭代4.4:比赛项目模块 675

21.6.5迭代4.5:比赛日程模块 679

21.6.6迭代4.6:倒计时模块表示层 681

21.6.7迭代4.7:关于我们模块表示层 683

21.6.8迭代4.8:发布到GitHub 683

21.7任务5:收工 684

21.7.1迭代5.1:添加图标 684

21.7.2迭代5.2:设计和添加启动界面 684

21.7.3迭代5.3:植入谷歌AdMob横幅广告 685

21.7.4迭代5.4:性能测试与改善 686

21.7.5迭代5.5:发布到GitHub 687

21.7.6迭代5.6:在App Store上发布应用 687

21.8小结 690