1、 移动开发系列 Swift 全解析:新式 iOS 实战开发 张云波 冼树华 丁美程 编著 Publishing House of Electronics Industry 北京BEIJING 内 容 简 介 本书从 Swift 4 开始,从 Swift 全面的语法,到 iOS 11 和 iOS 12 的入门级 App 开发,最后由一个非常实用的 iOS 小游戏开发结束。本书是一本适合新手从零开始,一步一步地坚实掌握 iOS 开发技术的一站式启蒙书。本书还配有语法和 iOS 基础开发的视频,可以有效地提升读者的学习效率和理解维度,增强学习兴趣。另外,读者可以与作者无缝交流,快乐地学习 iOS 开
2、发。本书适合广大编程爱好者及对 iOS 开发感兴趣的读者阅读。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 Swift 全解析:新式 iOS 实战开发/张云波,冼树华,丁美程编著.北京:电子工业出版社,2018.7(移动开发系列)ISBN 978-7-121-34610-1.S .张 冼 丁 .程序语言程序设计 .TP312 中国版本图书馆 CIP 数据核字(2018)第 142617 号 策划编辑:张 迪 责任编辑:底 波 印 刷:装 订:出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编 100036 开 本:7871
3、092 1/16 印张:26.25 字数:672 千字 版 次:2018 年 7 月第 1 版 印 次:2018 年 7 月第 1 次印刷 定 价:99.00 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。本书咨询联系方式:(010)88254469;。借 iOS 每年一次大幅更新的东风,经过几个版本的成长,Swift 4 已经非常成熟了,在iOS 开发中的便利程度和第三方库的生态建设上,它实际已经大幅领先 Objective-C。苹果所有
4、的官方文档和视频资料均以 Swift 语言为主。这个语言的原作者虽然离开了苹果公司,但 Swift 本身的发展丝毫没有减缓。笔者认为,除了维护垂垂老矣的 Objective-C 项目,新项目完全可以用 Swift 4 从头开始实施。拥抱强类型、类型推断、Optional、面向协议、泛型编程这些现代化编程语言必备的特性,是每个程序员必备的功课之一。本书分为 3 篇:Swift 4 基础语法篇、iOS 11 基础开发篇和游戏实战篇。若读者在阅读本书时遇到问题,可以进入 QQ 群 532084830,与众多开发者沟通或下载相关资料,也可以在各大视频平台、小波说雨燕官网()观看本书配套的视频课程,这会
5、使读者的学习效率大幅提升!小波 上海交通大学毕业,小波说雨燕系列 Swift 教学视频作者,表情包式的表演成功吸引了新手的注意。为人勇敢而懦弱,大气却苛刻,长不大的 IT 宅男。人生如戏,常靠临时演技,曾为看动漫而学习日语,后又莫名其妙地获得了东京的工作机会。目前致力于移动App 领域的开发和培训工作。你有酒,我有故事,直播说给你听。华仔 暨南大学珠海学院毕业,IT大叔一枚,从.Net 到 Java,Android再到 iOS,从 Winform 到 H5,桌面到 Web,Web 到移动 App,产品研发到数据分析等工作都有涉及,现致力于移动互联网金融相关工作,最近迷上小游戏。丁 MC 毕业于
6、安徽工业大学,自学iOS 开发,参与或独立开发过多款App 上架 APPStore,目前就职于一家小型软件科技公司任技术总监。一个不甘平凡却依旧平凡的平凡人,相信生活不止眼前的苟且,还有诗和远方。敢于冒险和折腾,正准备着走向创业的不归路。参与本书编写的还有王倩影、张佳君、王韬懿、陈彬、贾建博、胡佳佳、王艳鹏、郭艾超。第 1 篇 Swift 4 基础语法篇 第 1 章 关于 Swift 3 第 2 章 Swift 语法基础 7 2.1 变量和常量7 2.2 注释8 2.3 分号9 2.4 整数9 2.5 浮点数10 2.6 类型安全和类型推断10 2.7 数值型字面量10 2.8 数值类型转换1
7、1 2.9 布尔类型13 2.10 元组13 2.11 可选类型14 2.12 错误处理15 2.13 断言16 第 3 章 Swift 基本运算符17 3.1 术语17 3.2 赋值运算符17 3.3 算术运算符18 3.4 组合赋值运算符19 3.5 比较运算符19 3.6 三元(目)运算符20 3.7 空合运算符21 3.8 区间运算符22 3.9 逻辑运算符23 第 4 章 Swift 字符串和字符26 VIII 4.1 字符串字面量26 4.2 初始化空字符串26 4.3 字符串可变性27 4.4 字符串都是值类型27 4.5 使用字符27 4.6 连接字符串与字符28 4.7 字符
8、串插入值28 4.8 Unicode29 4.9 计算字符数量31 4.10 访问与修改字符串31 4.11 比较字符串 33 第 5 章 Swift 集合类型 35 5.1 数组35 5.2 集39 5.3 字典42 第 6 章 Swift 控制流46 6.1 for 循环 46 6.1.1 for-in47 6.1.2 for 条件递增48 6.2 while 循环48 6.2.1 while49 6.2.2 repeat while49 6.3 if 语句50 6.4 guard 语句51 6.5 switch 语句52 6.6 控制转移语句54 6.6.1 continue 语句54
9、6.6.2 break 语句55 6.6.3 fallthrough 语句56 6.6.4 return 语句57 第 7 章 Swift 函数 58 7.1 函数的定义和调用58 7.2 函数的参数和返回值59 7.2.1 多个输入参数的函数59 7.2.2 没有参数的函数59 目 录 IX 7.2.3 没有返回值的函数60 7.2.4 没有返回值的函数调用具有返回值的函数60 7.2.5 多个返回值的函数60 7.2.6 元组可选类型返回值的函数61 7.3 函数的参数名称62 7.3.1 外部参数名称62 7.3.2 带默认值参数的函数62 7.3.3 可变参数的函数63 7.3.4 常
10、量参数和变量参数63 7.3.5 输入和输出参数64 7.4 函数类型65 7.4.1 使用函数类型65 7.4.2 使用函数类型作为参数65 7.4.3 使用函数类型作为返回值66 7.4.4 使用函数类型作为常量66 7.5 嵌套函数67 第 8 章 Swift 闭包 68 8.1 闭包的定义68 8.2 闭包表达式69 8.2.1 sorted 函数69 8.2.2 使用闭包表达式70 8.2.3 根据上下文推断参数70 8.2.4 单表达式闭包省掉返回关键字70 8.2.5 参数名称缩写71 8.2.6 运算符函数71 8.3 挂尾闭包71 8.4 闭包的值捕获72 8.5 闭包是引用
11、类型73 第 9 章 Swift 枚举 74 9.1 枚举的定义、结构和使用74 9.2 枚举在 switch 语句中的使用75 9.3 枚举关联值75 9.4 枚举原始值76 第 10 章 Swift 类和结构体77 10.1 类和结构体的对比77 X 10.1.1 类和结构体的定义78 10.1.2 类和结构体的实例78 10.1.3 类和结构体的属性访问78 10.2 结构体是值类型79 10.3 类是引用类型79 10.4 如何选择类和结构体79 10.5 集合类型的赋值和复制80 第 11 章 Swift 属性81 11.1 存储属性81 11.1.1 普通存储属性81 11.1.2
12、 延迟存储属性82 11.2 计算属性82 11.3 属性观察器84 11.4 全局变量和局部变量 85 11.5 静态属性85 第 12 章 Swift 方法 86 12.1 实例方法86 12.1.1 使用类中定义的实例方法86 12.1.2 使用结构体中定义的实例方法87 12.1.3 使用枚举中定义的实例方法88 12.2 静态方法89 12.2.1 使用类中定义的静态方法89 12.2.2 使用结构体中定义的静态方法89 第 13 章 Swift 下标 91 13.1 下标的定义91 13.2 下标的用法92 13.3 下标脚本93 第 14 章 Swift 继承 95 14.1 继
13、承的定义95 14.2 继承的一般用法95 14.3 重写父类的方法和属性96 14.3.1 重写父类的方法96 14.3.2 重写父类的属性97 14.4 防止父类的特性被重写98 目 录 XI 第 15 章 Swift 初始化99 15.1 初始化的定义99 15.2 为存储属性设置初始值99 15.3 自定义构造函数100 15.4 默认构造函数101 15.5 值类型的初始化102 15.6 引用类型的初始化103 15.6.1 指定构造函数和便利构造函数104 15.6.2 类的代理初始化调用104 15.6.3 两段式构造过程105 15.6.4 构造函数的继承和重写107 15.
14、6.5 自动构造函数的继承108 15.6.6 指定和便利构造器的实战109 15.7 可失败构造函数111 15.8 必要构造函数116 15.9 通过闭包或方法设置属性的默认值 116 第 16 章 Swift 析构 119 16.1 析构的原理119 16.2 析构的实战119 第 17 章 Swift 错误处理 122 17.1 创建错误类型122 17.2 抛出错误123 17.3 捕获和处理错误124 17.4 不处理错误126 17.5 将错误转为可选类型126 第 18 章 Swift 泛型 128 18.1 泛型能解决的问题128 18.2 泛型函数129 18.3 类型参数
15、130 18.4 命名类型参数131 18.5 泛型类型131 18.6 泛型类型的扩展133 18.7 类型约束134 18.8 关联类型136 18.9 条件语句138 XII 第 19 章 Swift 扩展140 19.1 扩展的定义和语法140 19.2 扩展计算属性140 19.3 扩展构造函数141 19.4 扩展方法143 19.5 扩展下标144 19.6 扩展嵌套函数144 第 20 章 Swift 协议146 20.1 协议的定义和语法146 20.2 对属性的规定147 20.3 对方法的规定148 20.4 对变异方法的规定149 20.5 对构造函数的规定150 20
16、.6 协议也是一种类型151 20.7 代理152 20.8 在扩展中添加协议155 20.9 协议类型的集合155 20.10 协议的继承156 20.11 协议类型的组合 157 20.12 检查协议的一致性158 第 2 篇 iOS 11 基础开发篇 第 21 章 入门级163 21.1 开发环境配置163 21.2 Playground164 21.3 第一个 App168 21.4 创建用户交互178 第 22 章 初级181 22.1 Auto Layout181 22.2 Stack View184 22.3 Size Class192 22.4 Table View197 22.4.1 原型单元格199 22.4.2 代理模式201 22.4.3 连接数据源203 目 录 XIII 22.5 自定义单元格204 22.6 单元格交互216 22.7 单元格滑动菜单219 22.8 导航和转场226 第 23 章 中级235 23.1 Model 重构235 23.2 静态单元格241 23.3 导航栏、状态条和动态字体的定制技巧 248 23.4 视差动画256 23.