产品特色
编辑推荐
- 畅销书《iOS开发指南》作者全新力作!
- 基于Swift 3.x,教你如何从零开始开发并上架应用
- 涵盖面向协议编程、Swift编码规范、混合编程(Objective-C/C/C++与Swift)、SpriteKit等
- 本书配套网站不仅提供了交流平台,更有作者提供热心答疑与指导
- 200多个完整示例项目源代码,详细解析Swift 3.x的核心知识点
内容简介
本书基于Swift 3.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5部分,diyi部分介绍了Swift的一些基础知识,第二部分介绍了基于Swift语言的中高级内容,第三部分主要介绍了Swift与Objective-C/C/C++的混合编程等相关问题,第四部分介绍了基于Swift语言的2D游戏引擎技术,第五部分详细介绍了一个游戏App的开发过程。
作者简介
关东升,一个在IT领域摸爬滚打20年的程序员、培训师、作者,另著有《iOS开发指南(第5版)》《Android网络游戏开发实战》《Cocos2d-x实战》系列等书。
目录
第1章 准备起航
1.1 本书约定
1.1.1 示例代码约定
1.1.2 图示约定
1.1.3 函数和方法签名约定
1.1.4 承接上一行代码约定
1.1.5 代码行号约定
1.2 Swift开发工具
1.2.1 Xcode开发工具
1.2.2 AppCode开发工具
1.3 本章小结
1.4 同步练习
第2章 第一个SWIFT程序
2.1 使用REPL
2.1.1 启动Swift REPL
2.1.2 使用Swift REPL
2.2 使用Playground
2.2.1 编程利器Playground
2.2.2 编写HelloWorld程序
2.3 通过Xcode创建macOS工程
2.3.1 创建macOS工程
2.3.2 编译和运行
2.4 使用swiftc命令
2.4.1 编译
2.4.2 运行
2.5 代码解释
2.6 本章小结
2.10 同步练习
第3章 SWIFT语法基础
3.1 标识符和关键字
3.1.1 标识符
3.1.2 关键字
3.2 常量和变量
3.2.1 常量
3.2.2 变量
3.2.3 使用var还是let
3.3 注释
3.4 表达式
3.5 本章小结
3.6 同步练习
第4章 运算符
4.1 算术运算符
4.1.1 一元运算符
4.1.2 二元运算符
4.1.3 算术赋值运算符
4.2 关系运算符
4.3 逻辑运算符
4.4 位运算符
4.5 其他运算符
4.6 本章小结
4.7 同步练习
第5章 SWIFT原生数据类型
5.1 Swift数据类型
5.2 整型
5.3 浮点型
5.4 数字表示方式
5.4.1 进制数字表示
5.4.2 指数表示
5.4.3 其他表示
5.5 数字类型之间的转换
5.5.1 整型之间的转换
5.5.2 整型与浮点型之间的转换
5.6 布尔型
5.7 元组类型
5.8 可选类型
5.8.1 可选类型概念
5.8.2 可选类型值拆包
5.8.3 可选绑定
5.9 本章小结
5.10 同步练习
第6章 SWIFT原生字符串
6.1 字符
6.1.1 Unicode编码
6.1.2 转义符
6.2 创建字符串
6.3 可变字符串
6.3.1 字符串拼接
6.3.2 字符串插入、删除和替换
6.4 字符串比较
6.4.1 大小和相等比较
6.4.2 前缀和后缀比较
6.5 本章小结
6.6 同步练习
第7章 控制语句
7.1 分支语句
7.1.1 if语句
7.1.2 switch语句
7.1.3 guard语句
7.2 循环语句
7.2.1 while语句
7.2.2 repeat-while语句
7.2.3 for语句
7.3 跳转语句
7.3.1 break语句
7.3.2 continue语句
7.3.3 fallthrough语句
7.4 范围与区间运算符
7.4.1 switch中使用区间运算符
7.4.2 for中使用区间运算符
7.5 值绑定
7.5.1 if中的值绑定
7.5.2 guard中的值绑定
7.5.3 switch中的值绑定
7.6 where语句
7.6.1 switch中使用where语句
7.6.2 for中使用where语句
7.7 本章小结
7.8 同步练习
第8章 SWIFT原生集合类型
8.1 Swift中的数组集合
8.1.1 数组声明和初始化
8.1.2 可变数组
8.1.3 数组遍历
8.2 Swift中的字典集合
8.2.1 字典声明与初始化
8.2.2 可变字典
8.2.3 字典遍历
8.3 Swift中的Set集合
8.3.1 Set声明和初始化
8.3.2 可变Set集合
8.3.3 Set集合遍历
8.3.4 Set集合运算
8.4 本章小结
8.5 同步练习
第9章 函数
9.1 定义函数
9.2 函数参数
9.2.1 使用参数标签
9.2.2 省略参数标签
9.2.3 参数默认值
9.2.4 可变参数
9.2.5 值类型参数的引用传递
9.3 函数返回值
9.3.1 无返回值函数
9.3.2 多返回值函数
9.4 函数类型
9.4.1 作为函数返回类型使用
9.4.2 作为参数类型使用
9.5 嵌套函数
9.6 本章小结
9.7 同步练习
第10章 闭包
10.1 回顾嵌套函数
10.2 闭包的概念
10.3 使用闭包表达式
10.3.1 类型推断简化
10.3.2 隐藏return关键字
10.3.3 省略参数名
10.3.4 使用闭包返回值
10.4 使用尾随闭包
10.5 捕获上下文中的变量和常量
10.6 本章小结
10.7 同步练习
第11章 SWIFT语言中的面向对象特性
11.1 面向对象概念和基本特征
11.2 Swift中的面向对象类型
11.3 枚举
11.3.1 成员值
11.3.2 原始值
11.3.3 相关值
11.4 结构体与类
11.4.1 类和结构体定义
11.4.2 再谈值类型和引用类型
11.4.3 引用类型的比较
11.4.4 运算符重载
11.5 类型嵌套
11.6 可选链
11.6.1 可选链的概念
11.6.2 使用问号( )和感叹号(!)
11.7 访问限定
11.7.1 访问范围
11.7.2 访问级别
11.7.3 使用访问级别最佳实践
11.8 选择类还是结构体最佳实践
11.8.1 类和结构体的异同
11.8.2 选择的原则
11.9 本章小结
11.10 同步练习
第12章 属性与下标
12.1 存储属性
12.1.1 存储属性概念
12.1.2 延迟存储属性
12.2 计算属性
12.2.1 计算属性的概念
12.2.2 只读计算属性
12.2.3 结构体和枚举中的计算属性
12.3 属性观察者
12.4 静态属性
12.4.1 结构体静态属性
12.4.2 枚举静态属性
12.4.3 类静态属性
12.5 使用下标
12.5.1 下标概念
12.5.2 示例:二维数组
12.6 本章小结
12.7 同步练习
第13章 方法
13.1 实例方法
13.2 可变方法
13.3 静态方法
13.3.1 结构体静态方法
13.3.2 枚举静态方法
13.3.3 类静态方法
13.4 本章小结
13.5 同步练习
第14章 构造与析构
14.1 构造函数
14.1.1 默认构造函数
14.1.2 构造函数与存储属性初始化
14.1.3 使用参数标签
14.2 构造函数重载
14.2.1 构造函数重载概念
14.2.2 结构体构造函数代理
14.2.3 类构造函数横向代理
14.3 析构函数
14.4 本章小结
14.5 同步练习
第15章 类继承
15.1 从一个示例开始
15.2 构造函数继承
15.2.1 构造函数调用规则
15.2.2 构造过程安全检查
15.2.3 构造函数继承
15.3 重写
15.3.1 重写实例属性
15.3.2 重写静态属性
15.3.3 重写实例方法
15.3.4 重写静态方法
15.3.5 下标重写
15.3.6 使用final关键字
15.4 类型检查与转换
15.4.1 使用is进行类型检查
15.4.2 使用as、as!和as 进行类型转换
15.4.3 使用AnyObject和Any类型
15.5 本章小结
15.6 同步练习
第16章 扩展
16.1 “轻量级”继承机制
16.2 声明扩展
16.3 扩展计算属性
16.4 扩展方法
16.5 扩展构造函数
16.5.1 值类型扩展构造函数
16.5.2 引用类型扩展构造函数
16.6 扩展下标
16.7 本章小结
16.8 同步练习
第17章 协议
17.1 协议概念
17.2 协议定义和遵从
17.3 协议方法
17.3.1 协议实例方法
17.3.2 协议静态方法
17.3.3 协议可变方法
17.4 协议属性
17.4.1 协议实例属性
17.4.2 协议静态属性
17.5 面向协议编程
17.5.1 协议类型
17.5.2 协议的继承
17.5.3 协议扩展
17.5.4 协议的合成
17.5.5 扩展中遵从协议
17.6 面向协议编程示例:表视图中使用扩展协议
17.7 本章小结
17.8 同步练习
第18章 泛型
18.1 一个问题的思考
18.2 泛型函数
18.2.1 使用泛型函数
18.2.2 多类型参数
18.3 泛型类型
18.4 泛型扩展
18.5 本章小结
18.6 同步练习
第19章 SWIFT编码规范
19.1 命名规范
19.2 注释规范
19.2.1 文件注释
19.2.2 文档注释
19.2.3 代码注释
19.2.4 使用地标注释
19.3 声明
19.3.1 变量或常量声明
19.3.2 属性声明
19.4 代码排版
19.4.1 空行
19.4.2 空格
19.4.3 断行
19.4.4 缩进
19.5 本章小结
19.6 同步练习
第20章 SWIFT内存管理
20.1 Swift内存管理概述
20.1.1 引用计数
20.1.2 示例:Swift自动引用计数
20.2 强引用循环
20.3 打破强引用循环
20.3.1 弱引用
20.3.2 无主引用
20.4 闭包中的强引用循环
20.4.1 一个闭包中的强引用循环示例
20.4.2 解决闭包强引用循环
20.5 本章小结
20.6 同步练习
第21章 错误处理
21.1 Cocoa错误处理模式
21.2 do-try-catch错误处理模式
21.2.1 捕获错误
21.2.2 错误类型
21.2.3 声明抛出错误
21.2.4 在函数或方法中抛出错误
21.2.5 try 和try!的使用区别
21.3 案例:MyNotes应用数据持久层实现
21.3.1 MyNotes应用介绍
21.3.2 MyNotes应用数据持久层设计
21.3.3 实现Note实体类
21.3.4 NoteDAO代码实现
21.3.5 使用defer语句释放资源
21.3.6 测试示例
21.4 本章小结
21.5 同步练习
第22章 FOUNDATION框架
22.1 数字类NSNumber
22.1.1 获得NSNumber对象
22.1.2 比较NSNumber对象
22.1.3 数字格式化
22.1.4 NSNumber与Swift原生数字类型之间的桥接
22.2 字符串类
22.2.1 NSString类
22.2.2 NSMutableString类
22.2.3 NSString与String之间的桥接
22.3 数组类
22.3.1 NSArray类
22.3.2 NSMutableArray类
22.3.3 NSArray与Swift原生数组之间的桥接
22.4 字典类
22.4.1 NSDictionary类
22.4.2 NSMutableDictionary类
22.4.3 NSDictionary与Swift原生字典之间的桥接
22.5 NSSet集合类
22.5.1 NSSet类
22.5.2 NSMutableSet类
22.5.3 NSSet与Swift原生Set之间的桥接
22.6 文件管理
22.6.1 访问目录
22.6.2 目录操作
22.6.3 文件操作
22.7 字节缓存
22.7.1 访问字节缓存
22.7.2 示例:Base64解码与编码
22.8 日期与时间
22.8.1 NSDate和Date
22.8.2 日期时间格式化
22.8.3 NSCalendar、Calendar、NSDateComponents和DateComponents
22.8.4 示例:时区转换
22.9 使用谓词NSPredicate过滤数据
22.9.1 一个过滤员工花名册的示例
22.9.2 使用谓词NSPredicate
22.9.3 NSPrdicate与集合
22.9.4 格式说明符
22.9.5 运算符
22.10 使用正则表达式
22.10.1 在NSPredicate中使用正则表达式
22.10.2 使用NSRegularExpression
22.10.3 示例:日期格式转换
22.11 本章小结
第23章 SWIFT与OBJECTIVE-C混合编程
23.1 选择语言
23.2 文件扩展名
23.3 Swift与Objective-C API映射
23.3.1 构造函数映射
23.3.2 方法名映射
23.4 同一应用目标中的混合编程
23.4.1 什么是目标
23.4.2 Swift调用Objective-C
23.4.3 Objective-C调用Swift
23.5 同一框架目标中的混合编程
23.5.1 链接库和框架
23.5.2 Swift调用Objective-C
23.5.3 测试框架目标
23.5.4 Objective-C调用Swift
23.6 本章小结
第24章 SWIFT与C/C++混合编程
24.1 数据类型映射
24.1.1 C语言基本数据类型
24.1.2 C语言指针类型
24.2 应用目标中的混合编程
24.2.1 Swift调用C API
24.2.2 Swift调用C++ API
24.3 框架目标中的混合编程
24.3.1 同一框架目标中Swift调用C或C++ API
24.3.2 Swift调用第三方库中的C或C++ API
24.4 案例:用SQLite嵌入式数据库实现MyNotes数据持久层
24.4.1 Note实体类代码
24.4.2 创建表
24.4.3 插入数据
24.4.4 查询数据
24.4.5 应用沙箱目录
24.4.6 表示层开发
24.5 本章小结
第25章 SPRITEKIT游戏引擎
25.1 移动平台游戏引擎介绍
25.2 第一个SpriteKit游戏
25.2.1 创建工程
25.2.2 工程剖析
25.3 一切都是节点
25.3.1 节点“家族”
25.3.2 节点树
25.3.3 节点中重要的方法
25.3.4 节点中重要的属性
25.4 精灵
25.4.1 精灵类SKSpriteNode
25.4.2 案例:沙漠英雄场景
25.4.3 使用纹理图集性能优化
25.5 场景切换
25.5.1 场景切换方法
25.5.2 场景过渡动画
25.5.3 案例:沙漠英雄场景切换
25.6 动作
25.6.1 常用动作
25.6.2 组合动作
25.6.3 案例:帧动画实现
25.7 粒子系统
25.7.1 粒子系统属性
25.7.2 内置粒子系统模板
25.8 游戏音乐与音效
25.8.1 音频文件介绍
25.8.2 macOS和iOS平台音频优化
25.8.3 背景音乐
25.8.4 3D音效
25.9 物理引擎
25.9.1 物理引擎核心概念
25.9.2 物理引擎中的物体
25.9.3 接触与碰撞
25.9.4 案例:食品的接触与碰撞
25.10 本章小结
第26章 游戏APP实战——迷失航线
26.1 《迷失航线》游戏分析与设计
26.1.1 《迷失航线》故事背景
26.1.2 需求分析
26.1.3 原型设计
26.1.4 游戏脚本
26.2 任务1:游戏工程的创建与初始化
26.2.1 迭代1.1:创建工程
26.2.2 迭代1.2:自定义类型维护
26.2.3 迭代1.3:添加资源文件
26.2.4 迭代1.4:添加粒子系统
26.3 任务2:创建Loading场景
26.3.1 迭代2.1:设计场景
26.3.2 迭代2.2:Loading动画
26.3.3 迭代2.3:预处理加载纹理
26.4 任务3:创建Home场景
26.4.1 迭代3.1:设计场景
26.4.2 迭代3.2:实现代码
26.5 任务4:创建设置场景
26.5.1 迭代4.1:设计场景
26.5.2 迭代4.2:实现代码
26.6 任务5:创建帮助场景
26.6.1 迭代5.1:设计场景
26.6.2 迭代5.2:实现代码
26.7 任务6:实现游戏场景
26.7.1 迭代6.1:设计场景
26.7.2 迭代6.2:创建敌人精灵
26.7.3 迭代6.3:创建玩家飞机精灵
26.7.4 迭代6.4:创建子弹精灵
26.7.5 迭代6.5:初始化游戏场景
26.7.6 迭代6.6:玩家移动飞机
26.7.7 迭代6.7:游戏循环与任务调度
26.7.8 迭代6.8:游戏场景菜单实现
26.7.9 迭代6.9:玩家飞机发射子弹
26.7.10 迭代6.10:子弹与敌人的碰撞检测
26.7.11 迭代6.11:玩家飞机与敌人的碰撞检测
26.8 任务7:游戏结束场景
26.8.1 迭代7.1:设计场景
26.8.2 迭代7.2:实现代码
26.9 还有“最后一公里”
26.9.1 添加图标
26.9.2 调整Identity和Deployment Info属性
26.9.3 调整程序代码
26.10 本章小结
从零开始学Swift(第2版)图书简介 开启你的编程之旅,拥抱移动开发新篇章 是否曾梦想构建属于自己的iOS应用,将创意转化为触手可及的数字体验?是否曾对Swift这门现代、强大且易于学习的编程语言充满好奇?《从零开始学Swift(第2版)》正是为你量身打造的入门指南,它将带领你从最基础的概念出发,一步步踏入Swift编程的世界,让你能够自信地开发出属于自己的应用程序。 本书并非简单地罗列Swift的语法规则,而是以一种循序渐进、由浅入深的方式,让你真正理解编程的思维方式,掌握Swift语言的核心精髓。我们深知初学者可能会面临的困惑和挑战,因此,本书在内容编排上力求清晰易懂,每一个概念的引入都伴随着详实的解释和生动的代码示例,让你在学习过程中能够轻松消化,并立即进行实践。 本书特色与价值: 面向零基础读者: 即使你从未接触过任何编程语言,本书也能让你快速上手。我们从最基本的计算机科学概念讲起,逐步介绍变量、数据类型、运算符、控制流等基础知识,为你打下坚实的编程基础。 深入浅出的Swift语法讲解: Swift作为一门现代化的编程语言,其语法简洁、表达力强。本书将详细讲解Swift的各项特性,包括但不限于: 变量与常量: 理解`var`和`let`的区别,掌握数据的存储与使用。 基本数据类型: 学习`Int`、`Double`、`String`、`Bool`等常用数据类型的特性和应用。 集合类型: 掌握`Array`、`Dictionary`、`Set`这三种强大的集合,高效地组织和管理数据。 运算符: 熟悉算术运算符、比较运算符、逻辑运算符等,实现复杂的数据操作。 控制流: 学习`if-else`、`switch`语句,理解循环结构如`for-in`、`while`,实现程序的逻辑控制。 函数: 掌握函数的定义、参数传递、返回值,学会编写可复用、模块化的代码。 可选类型(Optionals): 这是Swift的一大亮点,本书将深入剖析可选类型的概念、使用场景以及如何安全地解包,避免运行时错误。 结构体(Structs)与类(Classes): 理解值类型与引用类型的区别,掌握创建和使用结构体与类的基本方法。 属性与方法: 学习如何为结构体和类添加属性来存储数据,以及添加方法来定义行为。 继承与协议(Protocols): 掌握面向对象编程的重要概念,学习如何实现代码的复用和多态。 枚举(Enums): 学习如何定义一组相关的常量,使代码更具可读性和安全性。 闭包(Closures): 理解闭包作为一种特殊的函数,掌握其强大的捕获能力和在函数式编程中的应用。 错误处理(Error Handling): 学习如何优雅地处理程序运行时可能出现的错误,提高程序的健壮性。 泛型(Generics): 了解泛型如何让你编写出更灵活、可重用的代码,适用于多种数据类型。 实战导向,理论与实践相结合: 本书不仅仅停留在理论层面,而是强调实践。每个章节都配有大量的代码示例,让你能够边学边练。更有精心设计的练习题,帮助你巩固所学知识,提升解决问题的能力。 紧跟Swift最新特性(第2版): Swift语言在不断发展,第2版在内容上进行了全面更新,涵盖了Swift语言的最新特性和最佳实践,确保你学习的是最前沿、最主流的Swift知识。 为iOS开发打下坚实基础: 虽然本书主要聚焦于Swift语言本身,但它为你后续学习iOS开发奠定了至关重要的基础。理解Swift语言是掌握UIKit、SwiftUI等框架的前提。本书将为你打开通往App Store的大门。 清晰的逻辑结构和易读的排版: 我们注重内容的组织和呈现方式,采用清晰的章节划分、标题和副标题,辅以图示和代码高亮,确保阅读体验流畅舒适。 本书内容梗概(但不限于): 第一部分:Swift语言基础入门 我们将从最根本的计算机编程概念开始,逐步引导你认识Swift这门语言。 第一章:欢迎来到Swift的世界: 介绍Swift语言的背景、优势,以及为何它成为当前最受欢迎的移动开发语言之一。安装和配置开发环境(Xcode),体验你的第一个Swift程序。 第二章:变量、常量与基本数据类型: 深入理解`var`与`let`的区别,学习Swift提供的基本数据类型,如整型、浮点型、布尔型和字符串型,并掌握它们之间的相互转换。 第三章:运算符与表达式: 学习各种运算符,包括算术运算符、赋值运算符、比较运算符、逻辑运算符,以及它们在实际编程中的应用,构建复杂的表达式。 第四章:控制流:条件判断与循环: 掌握如何使用`if-else`语句和`switch`语句来控制程序的执行流程,学习`for-in`、`while`循环,实现重复性的任务。 第五章:集合类型:数组、字典与集合: 学习如何使用`Array`来存储有序的数据序列,`Dictionary`来存储键值对,以及`Set`来存储无序且不重复的元素。掌握集合的创建、访问、修改和遍历。 第二部分:构建更复杂的程序结构 在掌握了基本语法之后,我们将进一步探索Swift的强大功能,学习如何组织和管理更复杂的代码。 第六章:函数:代码的模块化与复用: 学习如何定义函数,传递参数,以及返回值。理解函数的应用场景,编写更具可读性和可维护性的代码。 第七章:可选类型:安全地处理缺失值: 深入理解Swift中可选类型的概念,学习如何声明、访问和安全地解包可选类型,有效避免因nil值引起的运行时崩溃。 第八章:结构体与类:面向对象编程的基石: 学习Swift中的值类型(结构体)和引用类型(类),理解它们在内存管理和数据传递上的差异,掌握属性和方法的定义与使用。 第九章:枚举:定义一组相关的常量: 学习如何使用枚举来创建一组具有命名值的常量,使代码更清晰、更具类型安全性。 第十章:属性与方法:为数据和行为建模: 进一步深入学习如何为结构体和类添加计算型属性、存储型属性、类型属性,以及实例方法、类型方法,构建更复杂的模型。 第三部分:Swift的高级特性与实践 本部分将介绍Swift的一些高级特性,帮助你写出更优雅、更高效的代码,并为进一步的iOS开发打下基础。 第十一章:继承与协议:代码的扩展与抽象: 学习如何利用继承实现代码复用,以及如何通过协议定义行为契约,实现多态和更灵活的设计。 第十二章:错误处理:构建健壮的应用程序: 学习Swift的错误处理机制,包括`throws`、`try`、`catch`,以及如何定义和抛出自定义错误,提高程序的容错能力。 第十三章:泛型:编写通用的代码: 了解泛型的作用,学习如何编写不依赖于特定数据类型的通用函数和类型,实现代码的高度复用。 第十四章:闭包:强大的函数式编程特性: 深入理解闭包的本质,学习如何使用闭包进行函数参数传递、返回值,以及在异步编程中的应用。 第十五章:内存管理与ARC(自动引用计数): 了解Swift的内存管理机制,特别是ARC的工作原理,以及如何避免循环引用问题。 第十六章:Swift标准库概览: 简单介绍Swift标准库中常用的类型和工具,帮助你更高效地利用Swift提供的强大功能。 本书适合谁阅读? 编程新手: 任何想要学习编程,特别是移动开发,但没有任何编程基础的读者。 想要学习iOS开发的开发者: 无论你是想转行iOS开发,还是希望在现有技术栈上增加iOS开发能力,本书都是你的理想起点。 对Swift语言感兴趣的技术爱好者: 想要了解Swift这门现代化编程语言的独特魅力和强大功能的读者。 希望提升Swift技能的开发者: 即使你已经掌握了一些编程知识,本书也能帮助你系统地梳理Swift语言的知识体系,掌握其精髓。 开启你的Swift学习之旅,不仅仅是学习一门编程语言,更是开启了通往充满无限可能性的移动开发世界的大门。 《从零开始学Swift(第2版)》将是你旅途中最可靠的伙伴,它会陪伴你从懵懂到精通,让你能够自信地用Swift创造属于自己的精彩。现在,就让我们一起踏上这段激动人心的编程探索之旅吧!