iOS开发指南 从Hello World到App Store上架 第5版 下载PDF

  |   0 评论   |   229 浏览

    本书是iOS开发权威教程,以Swift和Objective-C两种语言进行讲解。书中分5部分介绍如何从零起步编写并上线iOS 应用:第一部分介绍iOS开发的基础知识,包括界面构建技术、基本控件、协议、表视图、界面布局、屏幕适配、导航、iPad应用开发、iOS设备手势、Quartz 2D、iOS动画等;第二部分介绍本地数据持久化、数据交换格式和Web Service,第三部分为进阶篇,介绍了定位服务、苹果地图、Contacts框架、应用扩展、用户通知等内容;第四部分介绍测试、调试和优化等相关知识;第五部分为实战篇,涵盖代码版本管理、项目依赖管理、App Store发布流程,以及一个真实iOS应用的设计、编程、测试与发布过程。
      与上一版相比,本书不仅基于iOS 10进行了全面更新,还增加并修订了设备手势、Quartz 2D、动画、用户扩展、用户通知、Core Data等内容。
      本书适合iOS 开发人员阅读。


    第一部分 基 础 篇
    第1章 开篇综述 2
    1.1 iOS概述 2
    1.1.1 iOS介绍 2
    1.1.2 iOS 10新特性 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 错误处理约定 7
    第2章 第一个iOS应用程序 8
    2.1 创建HelloWorld工程 8
    2.1.1 通过Xcode创建工程 9
    2.1.2 添加标签 11
    2.1.3 运行应用 13
    2.1.4 Xcode中的iOS工程模板 13
    2.1.5 应用剖析 14
    2.2 应用生命周期 16
    2.2.1 非运行状态——应用启动场景 18
    2.2.2 点击Home键——应用退出场景 18
    2.2.3 挂起重新运行场景 21
    2.2.4 内存清除:应用终止场景 21
    2.3 设置产品属性 22
    2.3.1 Xcode中的工程和目标 22
    2.3.2 设置常用的产品属性 24
    2.4 iOS API简介 26
    2.4.1 API概述 26
    2.4.2 如何使用API帮助文档 26
    2.5 小结 28
    第3章 Cocoa Touch框架与构建应用界面 29
    3.1 视图控制器 29
    3.1.1 视图控制器种类 29
    3.1.2 视图的生命周期 29
    3.2 视图 30
    3.2.1 UIView继承层次结构 30
    3.2.2 视图分类 32
    3.2.3 应用界面构建层次 33
    3.3 使用故事板构建界面 34
    3.3.1 什么是故事板 34
    3.3.2 场景和过渡 37
    3.4 使用XIB文件构建界面 38
    3.4.1 重构HelloWorld 38
    3.4.2 XIB与故事板比较 42
    3.5 使用纯代码构建界面 42
    3.5.1 重构HelloWorld 42
    3.5.2 视图的几个重要属性 44
    3.6 三种构建界面技术讨论 46
    3.6.1 所见即所得 46
    3.6.2 原型驱动开发 46
    3.6.3 团队协同开发 47
    3.7 小结 47
    第4章 UIView与视图 48
    4.1 标签与按钮 48
    4.1.1 Interface Builder实现 48
    4.1.2 代码实现 51
    4.2 事件处理 53
    4.2.1 Interface Builder实现 53
    4.2.2 代码实现 55
    4.3 访问视图 57
    4.3.1 Interface Builder实现 57
    4.3.2 代码实现 58
    4.4 TextField和TextView 60
    4.4.1 Interface Builder实现 60
    4.4.2 代码实现 62
    4.4.3 键盘的打开和关闭 64
    4.4.4 关闭和打开键盘的通知 64
    4.4.5 键盘的种类 65
    4.5 开关控件、分段控件和滑块控件 67
    4.5.1 开关控件 67
    4.5.2 分段控件 69
    4.5.3 滑块控件 70
    4.6 Web视图:WKWebView类 72
    4.7 警告框和操作表 77
    4.7.1 使用UIAlertController实现警告框 77
    4.7.2 使用UIAlertController实现操作表 79
    4.8 等待相关的控件与进度条 81
    4.8.1 活动指示器ActivityIndicatorView 81
    4.8.2 进度条ProgressView 83
    4.9 工具栏和导航栏 86
    4.9.1 工具栏 86
    4.9.2 导航栏 90
    4.10 小结 95
    第5章 委托协议、数据源协议与高级视图 96
    5.1 视图中的委托协议和数据源协议 96
    5.2 选择器 96
    5.2.1 日期选择器 96
    5.2.2 普通选择器 101
    5.2.3 数据源协议与委托协议 106
    5.3 集合视图 108
    5.3.1 集合视图的组成 108
    5.3.2 集合视图数据源协议与委托协议 109
    5.4 案例:奥运会比赛项目 109
    5.4.1 创建工程 110
    5.4.2 自定义集合视图单元格 110
    5.4.3 添加集合视图 112
    5.4.4 实现数据源协议 114
    5.4.5 实现委托协议 115
    5.5 小结 115
    第6章 表视图 116
    6.1 概述 116
    6.1.1 表视图的组成 116
    6.1.2 表视图的相关类 117
    6.1.3 表视图分类 117
    6.1.4 单元格的组成和样式 119
    6.1.5 数据源协议与委托协议 121
    6.2 简单表视图 122
    6.2.1 实现协议方法 122
    6.2.2 UIViewController根视图控制器 123
    6.2.3 UITableViewController根视图控制器 129
    6.3 自定义表视图单元格 133
    6.3.1 Interface Builder实现 133
    6.3.2 代码实现 137
    6.4 添加搜索栏 138
    6.5 分节表视图 143
    6.5.1 添加索引 143
    6.5.2 分组 146
    6.6 插入和删除单元格 147
    6.6.1 Interface Builder实现 149
    6.6.2 代码实现 154
    6.7 移动单元格 155
    6.8 表视图UI设计模式 157
    6.8.1 分页模式 157
    6.8.2 下拉刷新模式 158
    6.8.3 下拉刷新控件 159
    6.9 小结 160
    第7章 界面布局 161
    7.1 界面布局概述 161
    7.1.1 表单布局模式 161
    7.1.2 列表布局模式 161
    7.1.3 网格布局模式 162
    7.2 iOS中各种“栏” 162
    7.3 传统界面布局问题 163
    7.4 Auto Layout布局技术 164
    7.4.1 在Interface Builder中管理Auto Layout约束 164
    7.4.2 案例:Auto Layout布局 164
    7.5 静态表布局 169
    7.5.1 什么是静态表 169
    7.5.2 案例:iMessage应用登录界面 170
    7.6 使用堆视图StackView 174
    7.6.1 堆视图与布局 174
    7.6.2 案例:堆视图布局 175
    7.7 小结 180
    第8章 屏幕适配 181
    8.1 iOS 屏幕的多样性 181
    8.1.1 iOS屏幕介绍 181
    8.1.2 iOS的3种分辨率 182
    8.1.3 获得iOS设备的屏幕信息 183
    8.2 Size Class与iOS多屏幕适配 184
    8.2.1 在Xcode 6和Xcode 7中使用Size Class技术 184
    8.2.2 Size Class的九宫格 185
    8.2.3 Size Class的四个象限 186
    8.2.4 在Xcode 8中使用Size Class 187
    8.2.5 案例:使用Size Class 190
    8.3 资源目录与图片资源适配 192
    8.4 小结 195
    第9章 视图控制器与导航模式 196
    9.1 概述 196
    9.1.1 视图控制器的种类 196
    9.1.2 导航模式 196
    9.2 模态视图 197
    9.2.1 Interface Builder实现 199
    9.2.2 代码实现 205
    9.3 平铺导航 206
    9.3.1 应用场景 206
    9.3.2 基于分屏导航的实现 208
    9.3.3 基于电子书导航的实现 213
    9.4 标签导航 219
    9.4.1 应用场景 219
    9.4.2 Interface Builder实现 220
    9.4.3 代码实现 223
    9.5 树形结构导航 225
    9.5.1 应用场景 225
    9.5.2 Interface Builder实现 226
    9.5.3 代码实现 233
    9.6 组合使用导航模式 235
    9.6.1 应用场景 235
    9.6.2 Interface Builder实现 236
    9.6.3 代码实现 243
    9.7 小结 246
    第10章 iPad应用开发 247
    10.1 iPad与iPhone应用开发的差异 247
    10.1.1 应用场景不同 247
    10.1.2 导航模式不同 247
    10.1.3 API不同 247
    10.2 iPad树形结构导航 248
    10.2.1 “邮件”应用中的树形结构导航 248
    10.2.2 Master-Detail应用程序模板 249
    10.2.3 使用Interface Builder实现SplitViewSample案例 254
    10.2.4 使用代码实现SplitViewSample案例 258
    10.3 iPad模态视图 261
    10.3.1 “邮件”应用中的模态导航 261
    10.3.2 iPad模态导航相关API 262
    10.3.3 使用Interface Builder实现ModalViewSample案例 264
    10.3.4 使用代码实现ModalViewSample案例 268
    10.4 Popover视图 271
    10.4.1 Popover相关API 272
    10.4.2 PopoverViewSample案例 272
    10.5 分屏多任务 276
    10.5.1 Slide Over多任务 276
    10.5.2 分屏视图多任务 278
    10.5.3 画中画多任务 280
    10.6 iPad分屏多任务适配开发 280
    10.6.1 分屏多任务前提条件 280
    10.6.2 分屏多任务适配 281
    10.7 小结 282
    第11章 手势识别 283
    11.1 手势种类 283
    11.2 手势识别器 284
    11.2.1 视图对象与手势识别 284
    11.2.2 手势识别状态 285
    11.2.3 实例:识别Tap手势 285
    11.2.4 实例:识别Long Press手势 290
    11.2.5 实例:识别Pan手势 291
    11.2.6 实例:Swipe手势 293
    11.2.7 实例:Rotation手势 295
    11.2.8 实例:Pinch手势 297
    11.2.9 实例:Screen Edge Pan手势 299
    11.3 小结 301
    第12章 Quartz 2D绘图技术 302
    12.1 绘制技术基础 302
    12.1.1 视图绘制周期 302
    12.1.2 实例:填充屏幕 302
    12.1.3 填充与描边 305
    12.1.4 绘制图像和文本 306
    12.2 Quartz图形上下文 308
    12.3 Quartz路径 309
    12.3.1 Quartz路径概述 309
    12.3.2 实例:使用贝塞尔曲线 311
    12.4 Quartz坐标变换 312
    12.4.1 坐标系 312
    12.4.2 2D图形的基本变换 315
    12.4.3 CTM变换 317
    12.4.4 仿射变换 322
    12.5 小结 322
    第13章 动画技术 323
    13.1 视图动画 323
    13.1.1 动画块 323
    13.1.2 动画结束的处理 325
    13.1.3 过渡动画 326
    13.2 Core Animation框架 329
    13.2.1 图层 329
    13.2.2 隐式动画 331
    13.2.3 显式动画 333
    13.2.4 关键帧动画 335
    13.2.5 使用路径 336
    13.3 小结 338
    第二部分 数据与网络通信篇
    第14章 数据持久化 340
    14.1 概述 340
    14.1.1 沙箱目录 340
    14.1.2 持久化方式 341
    14.2 实例:MyNotes应用 341
    14.3 属性列表 343
    14.4 使用SQLite数据库 349
    14.4.1 SQLite数据类型 350
    14.4.2 添加SQLite3库 350
    14.4.3 配置Swift环境 351
    14.4.4 创建数据库 351
    14.4.5 查询数据 353
    14.4.6 修改数据 355
    14.5 iOS 10中的Core Data技术 357
    14.5.1 对象关系映射技术 357
    14.5.2 添加Core Data支持 358
    14.5.3 Core Data栈 359
    14.6 案例:采用Core Data重构MyNotes应用 360
    14.6.1 建模和生成实体 360
    14.6.2 Core Data栈DAO 366
    14.6.3 查询数据 367
    14.6.4 修改数据 369
    14.7 小结 370
    第15章 数据交换格式 371
    15.1 XML数据交换格式 372
    15.1.1 XML文档结构 372
    15.1.2 解析XML文档 373
    15.2 案例:MyNotes应用读取XML数据 374
    15.2.1 使用NSXML解析 376
    15.2.2 使用TBXML解析 379
    15.3 JSON数据交换格式 385
    15.3.1 JSON文档结构 385
    15.3.2 JSON数据编码/解码 386
    15.4 案例:MyNotes应用JSON解码 387
    15.5 小结 388
    第16章 REST Web Service 389
    16.1 概述 389
    16.1.1 REST Web Service概念 389
    16.1.2 HTTP协议 389
    16.1.3 HTTPS协议 390
    16.1.4 苹果ATS限制 390
    16.2 使用NSURLSession 391
    16.2.1 NSURLSession API 392
    16.2.2 简单会话实现GET请求 393
    16.2.3 默认会话实现GET请求 396
    16.2.4 实现POST请求 397
    16.2.5 下载数据 398
    16.3 实例:使用NSURLSession重构MyNotes
    案例 400
    16.3.1 插入方法 401
    16.3.2 修改方法 402
    16.3.3 删除方法 402
    16.4 使用AFNetworking框架 405
    16.4.1 比较ASIHTTPRequest、AFNetworking和MKNetworkKit 405
    16.4.2 安装和配置AFNetworking框架 405
    16.4.3 实现GET请求 407
    16.4.4 实现POST请求 408
    16.4.5 下载数据 408
    16.4.6 上传数据 410
    16.5 使用为Swift设计的网络框架:Alamofire 412
    16.5.1 安装和配置Alamofire框架 412
    16.5.2 实现GET请求 413
    16.5.3 实现POST请求 414
    16.5.4 下载数据 414
    16.5.5 上传数据 415
    16.6 反馈网络信息改善用户体验 416
    16.6.1 使用下拉刷新控件改善用户体验 416
    16.6.2 使用活动指示器控件 419
    16.6.3 使用网络活动指示器 420
    16.7 小结 421
    第三部分 进 阶 篇
    第17章 定位服务 424
    17.1 定位服务概述 424
    17.1.1 定位服务编程 425
    17.1.2 测试定位服务 428
    17.2 管理定位服务 432
    17.2.1 应用启动与停止下的定位服务管理 432
    17.2.2 视图切换下的定位服务管理 432
    17.2.3 应用前后台切换下的定位服务管理 433
    17.2.4 设置自动暂停位置服务 436
    17.2.5 后台位置服务管理 436
    17.3 地理信息编码与反编码 437
    17.3.1 地理信息反编码 437
    17.3.2 实例:地理信息反编码 437
    17.3.3 地理信息编码查询 438
    17.3.4 实例:地理信息编码查询 439
    17.4 小结 440
    第18章 苹果地图应用 441
    18.1 使用iOS苹果地图 441
    18.1.1 显示地图 441
    18.1.2 显示3D地图 445
    18.2 添加标注 446
    18.2.1 实现查询 447
    18.2.2 在地图上添加标注 449
    18.3 跟踪用户位置变化 450
    18.4 使用程序外地图 451
    18.5 小结 454
    第19章 访问通讯录 455
    19.1 通讯录的安全访问设置 455
    19.2 使用Contacts框架读取联系人信息 456
    19.2.1 查询联系人 457
    19.2.2 读取单值属性 460
    19.2.3 读取多值属性 461
    19.2.4 读取图片属性 464
    19.3 使用Contacts框架写入联系人信息 464
    19.3.1 创建联系人 465
    19.3.2 修改联系人 467
    19.3.3 删除联系人 468
    19.4 使用系统提供的界面 469
    19.4.1 选择联系人 470
    19.4.2 显示和修改联系人 472
    19.5 小结 475
    第20章 iOS 10应用扩展 476
    20.1 应用扩展概述 476
    20.1.1 iOS 10应用扩展种类 476
    20.1.2 应用扩展工作原理 477
    20.1.3 应用扩展的生命周期 478
    20.2 Today应用扩展 478
    20.2.1 使用Today应用扩展 479
    20.2.2 实例:奥运会倒计时牌 480
    20.3 开发表情包 483
    20.3.1 iMessage应用 483
    20.3.2 表情包 484
    20.3.3 实例:开发表情包 484
    20.4 Message框架 488
    20.4.1 Message框架的主要API 488
    20.4.2 消息布局 488
    20.4.3 消息扩展界面的收缩和展开 489
    20.4.4 消息应用的生命周期 490
    20.4.5 消息会话 490
    20.4.6 实例:高斯模糊滤镜 491
    20.5 小结 494
    第21章 重装上阵的iOS 10用户通知 495
    21.1 用户通知概述 495
    21.1.1 通知种类 495
    21.1.2 通知界面 495
    21.1.3 设置通知 497
    21.2 开发本地通知 498
    21.2.1 开发本地通知案例 498
    21.2.2 请求授权 500
    21.2.3 通知的创建与发送 501
    21.2.4 通知接收后的处理 503
    21.3 开发推送通知 503
    21.3.1 推送通知机理 504
    21.3.2 生成SSL证书 504
    21.3.3 iOS客户端编程 513
    21.3.4 在iOS设备上运行客户端 515
    21.3.5 内容提供者推送通知 518
    21.4 小结 519
    第四部分 测试、调试和优化篇
    第22章 找出程序中的bug——调试 522
    22.1 Xcode调试工具 522
    22.1.1 定位编译错误 522
    22.1.2 查看和显示日志 523
    22.1.3 设置和查看断点 524
    22.1.4 调试工具 530
    22.1.5 输出窗口 532
    22.1.6 变量查看窗口 532
    22.1.7 查看线程 533
    22.2 LLDB调试工具 535
    22.2.1 断点命令 535
    22.2.2 观察点命令 537
    22.2.3 查看变量和计算表达式命令 538
    22.3 日志与断言输出 541
    22.3.1 使用NSLog函数 541
    22.3.2 使用断言 542
    22.4 异常栈报告分析 543
    22.4.1 跟踪异常栈 543
    22.4.2 分析栈报告 545
    22.5 在iOS设备上调试 546
    22.5.1 Xcode设置 546
    22.5.2 设备设置 546
    22.6 Xcode设备管理工具 548
    22.6.1 查看设备上的应用程序 548
    22.6.2 设备日志 550
    22.7 小结 551
    第23章 iOS测试驱动与单元测试 552
    23.1 测试驱动的软件开发概述 552
    23.1.1 测试驱动的软件开发流程 552
    23.1.2 测试驱动的软件开发案例 553
    23.1.3 iOS单元测试框架 555
    23.2 使用XCTest测试框架 555
    23.2.1 添加XCTest到工程 555
    23.2.2 编写XCTest测试方法 558
    23.2.3 运行测试用例目标 561
    23.2.4 分析测试报告 562
    23.3 异步单元测试 564
    23.4 性能测试 567
    23.4.1 测试用例代码 568
    23.4.2 分析测试结果 568
    23.5 小结 571
    第24章 iOS应用UI测试 572
    24.1 UI测试概述 572
    24.2 添加UI测试到工程 572
    24.2.1 创建工程时添加UI测试框架 572
    24.2.2 在现有工程中添加UI测试用例目标 573
    24.3 录制脚本 575
    24.3.1 录制之前的准备 575
    24.3.2 录制过程 575
    24.3.3 修改录制脚本 577
    24.4 访问UI元素 577
    24.4.1 UI元素的层次结构树 577
    24.4.2 UI测试中相关API 579
    24.5 表示逻辑组件测试最佳实践 579
    24.5.1 备忘录查询操作 580
    24.5.2 增加备忘录操作 580
    24.5.3 删除备忘录操作 581
    24.5.4 显示备忘录详细信息操作 582
    24.6 小结 582
    第25章 让你的程序“飞”起来——性能优化 583
    25.1 内存优化 583
    25.1.1 内存管理 583
    25.1.2 使用Analyze工具检查内存泄漏 583
    25.1.3 使用Instruments工具检查内存泄漏 587
    25.1.4 使用Instruments工具检查僵尸对象 592
    25.1.5 autorelease的使用问题 594
    25.1.6 响应内存警告 595
    25.2 优化资源文件 596
    25.2.1 图片文件优化 597
    25.2.2 音频文件优化 598
    25.3 延迟加载 599
    25.3.1 资源文件的延迟加载 599
    25.3.2 故事板文件的延迟加载 603
    25.3.3 XIB文件的延迟加载 605
    25.4 数据持久化的优化 607
    25.4.1 使用文件 607
    25.4.2 使用SQLite数据库 611
    25.4.3 使用Core Data 612
    25.5 可重用对象的使用 613
    25.5.1 表视图中的可重用对象 614
    25.5.2 集合视图中的可重用对象 615
    25.5.3 地图视图中的可重用对象 617
    25.6 并发处理 618
    25.6.1 一些概念 618
    25.6.2 主线程阻塞问题 618
    25.6.3 选择NSThread、NSOperation还是GCD 619
    25.6.4 GCD技术 619
    25.7 小结 620
    第五部分 实 战 篇
    第26章 管理好你的程序代码——代码版本控制 622
    26.1 概述 622
    26.1.1 版本控制历史 622
    26.1.2 基本概念 623
    26.2 Git代码版本控制 623
    26.2.1 服务器搭建 623
    26.2.2 Gitolite服务器管理 625
    26.2.3 Git常用命令 627
    26.2.4 Git分支 628
    26.2.5 Git协同开发 632
    26.2.6 Xcode中Git的配置与使用 634
    26.3 GitHub代码托管服务 642
    26.3.1 创建和配置GitHub账号 642
    26.3.2 创建代码库 645
    26.3.3 删除代码库 646
    26.3.4 派生代码库 647
    26.3.5 管理组织 650
    26.4 小结 653
    第27章 项目依赖管理 654
    27.1 使用CocoaPods工具管理依赖 654
    27.1.1 安装CocoaPods 654
    27.1.2 搜索库 655
    27.1.3 项目与第三方库搭配形式 656
    27.1.4 实例:静态链接库形式管理依赖 657
    27.1.5 实例:框架形式管理依赖 659
    27.2 使用Carthage工具管理依赖 660
    27.2.1 安装Carthage 660
    27.2.2 项目与第三方库搭配形式 661
    27.2.3 Cartfile文件 661
    27.2.4 实例:重构MyNotes依赖关系 662
    27.3 小结 664
    第28章 把应用放到App Store上 665
    28.1 收官 665
    28.1.1 在Xcode 中添加图标 665
    28.1.2 在Xcode中添加启动界面 668
    28.1.3 调整Identity和Deployment Info属性 671
    28.2 为发布进行编译 672
    28.2.1 创建开发者证书 672
    28.2.2 创建App ID 675
    28.2.3 创建描述文件 676
    28.2.4 发布编译 679
    28.3 发布上架 680
    28.3.1 创建应用 681
    28.3.2 应用定价 683
    28.3.3 基本信息输入 684
    28.3.4 上传应用 687
    28.3.5 提交审核 689
    28.4 常见审核不通过的原因 691
    28.4.1 功能问题 691
    28.4.2 用户界面问题 691
    28.4.3 商业问题 691
    28.4.4 不当内容 691
    28.4.5 其他问题 692
    28.5 小结 692
    第29章 iOS开发项目实战——2020东京奥运会应用开发及 App Store发布 693
    29.1 应用分析与设计 693
    29.1.1 应用概述 693
    29.1.2 需求分析 693
    29.1.3 原型设计 694
    29.1.4 数据库设计 694
    29.2 任务1:创建应用工程 695
    29.2.1 迭代1.1:创建工程 696
    29.2.2 迭代1.2:发布到GitHub 696
    29.3 任务2:数据库与数据持久化逻辑组件
    开发 696
    29.3.1 迭代2.1:编写数据库DDL脚本 696
    29.3.2 迭代2.2:插入初始数据到数据库 697
    29.3.3 迭代2.3:数据库版本控制 697
    29.3.4 迭代2.4:配置数据持久化逻辑组件 698
    29.3.5 迭代2.5:编写实体类 698
    29.3.6 迭代2.6:编写DAO类 700
    29.3.7 迭代2.7:数据库帮助类DBHelper 704
    29.3.8 迭代2.8:发布到GitHub 706
    29.4 任务3:表示逻辑组件开发 706
    29.4.1 迭代3.1:使用资源目录管理图片和图标资源 707
    29.4.2 迭代3.2:根据原型设计初步设计故事板 708
    29.4.3 迭代3.3:“首页”模块 709
    29.4.4 迭代3.4:“比赛项目”模块 710
    29.4.5 迭代3.5:“比赛日程”模块 714
    29.4.6 迭代3.6:“倒计时”模块 718
    29.4.7 迭代3.7:“关于我们”模块 719
    29.4.8 迭代3.8:发布到GitHub 720
    29.5 任务4:收工 720
    29.5.1 迭代4.1:添加图标 720
    29.5.2 迭代4.2:设计和添加启动界面 720
    29.5.3 迭代4.3:性能测试与改善 721
    29.5.4 迭代4.4:发布到GitHub 722
    29.5.5 迭代4.5:在App Store上发布应用 722
    29.6 小结 722
    本文提供pdf来自互联网查,支持正版尊重作者劳动成果,请 购买正版

    下载 iOS开发指南 从Hello World到App Store上架 第5版_关东升pdf

    评论

    发表评论

    validate