当前位置:首页 > 工业技术
iOS开发指南  从Hello World到App Store上架  第4版
iOS开发指南  从Hello World到App Store上架  第4版

iOS开发指南 从Hello World到App Store上架 第4版PDF电子书下载

工业技术

  • 电子书积分:22 积分如何计算积分?
  • 作 者:关东升著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2016
  • ISBN:9787115423184
  • 页数:802 页
图书介绍:本书是iOS开发权威指南,以Swift和Objective—C语言为基础,分5部分讲解如何从零起步编写并上线iOS应用。第一部分介绍iOS开发基础知识,第二部分介绍设计与架构的相关知识,第三部分介绍了iOS的一些高级知识,第四部分介绍测试、调试和优化等相关知识,第五部分为实战篇,涵盖代码版本管理、项目依赖管理、App Store发布流程,以及两个真实iOS应用的分析设计、编程、测试与分布过程。
《iOS开发指南 从Hello World到App Store上架 第4版》目录

第一部分 基础篇 2

第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 InterfaceBuilder实现 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 InterfaceBuilder实现 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 MasterDetail应用程序模板 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实现Modal View-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

第二部分 设计与架构篇 298

第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 CocoaTouch中的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

第三部分 进阶篇 388

第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

第四部分 测试、调试和优化篇 536

第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

第五部分 实战篇 642

第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

返回顶部