
《Swift从入门到精通》Swift语言部分按照由浅入深的方式依次展开基础篇、高级篇和深入篇的内容,每一篇由7章节组成,每章均有配套编程习题,帮助读者巩固知识点。然后逐步细化和分解问题的应用实例,帮助读者运用已学的Swift语言来解决实际应用问题,使读者体会到Swift语言在实际iOS App开发中所扮演的角色。最后,习题集部分通过30个比较经典的编程练习来帮助读者巩固已学的Swift语言知识,除提供配套参考代码外,还详细讲解编程思路,帮助读者了解题目的算法设计,以及如何通过语言来实现算法。
本书全面介绍了Swift 4中的所有重要特色,但又摒弃了部分不适合初学者的冷僻知识点,使第一次接触Swift的读者能够抓住重点,掌握精髓。除了在Swift语言方面尽最大可能做到面面俱到,本书通过预备知识部分,帮助读者迅速掌握Xcode的基本功能,熟练运用playground编写代码,为配合后面章节中编写小实例打下必要的基础。介绍完Swift语言,紧随其后的是由浅入深、逐步分解问题的一个应用实例,帮助读者运用已学的Swift语言解决实际问题,使读者体会到Swift语言在实际iOS App开发中扮演的角色。最后部分通过30个比较经典的编程练习帮助读者巩固已学的Swift语言知识。
本书共分为4篇。
第1篇为基础篇,含8章,介绍了预备知识和Swift语法中的基础内容。其中,第1章介绍读者在阅读本书Swift语言知识前必须掌握的基础内容,内容主要包括Xcode特性、Xcode的使用以及playground介绍。playground将是Swift语言实践的主要工具。第2章介绍基本的数据类型,包括常量和变量、整型和浮点型、布尔型、元组型、可选型等内容。第3章介绍各种常用的运算符,包括赋值运算符、算术运算符、关系运算符、逻辑运算符、三元运算符、区间运算符。第4章介绍字符串的相关知识,包括字符串的定义、字符串的操作等。第5章介绍几种集合类型的定义和操作,包括数组、集合和字典。第6章介绍几种控制流的语法和使用方法,包括for循环、while循环、if条件语句、switch条件语句及控制转移语句。第7章主要介绍函数的相关知识,包括函数的定义和调用方法、函数形参、函数类型、嵌套函数。第8章主要介绍闭包的相关知识,包括闭包表达式和闭包的应用。
第2篇为高级篇,含7章,介绍了Swift语法中的面向对象的基础知识。其中,第9章介绍枚举型,包括枚举型的定义、枚举型的关联值及原始值的定义和用法。第10章介绍结构体与类的定义,比较了两者的共同点和不同点,以及各自的应用场景。第11章介绍属性的相关知识,包括存储属性、计算属性、属性观察器以及类型属性。第12章介绍方法的相关知识,重点介绍实例方法和类型方法,同时也介绍了比较特殊的下标方法。第13章介绍类,先介绍了基类和子类的概念,然后介绍了如何进行重载。第14章介绍了协议,包括协议的使用、协议的继承性。第15章介绍了泛型的相关知识,包括泛型函数、泛型类。
第3篇为深入篇,含7章,介绍Swift语法中的面向对象的高级知识。其中,第16章介绍异常处理的相关知识,包括异常的定义及如何进行异常处理。第17章介绍了可选链,包括强制拆包的概念,以及可选链的应用场景。第18章介绍访问控制的相关定义和应用场景。第19章介绍类型操作符的相关知识,包括类型检查和类型转换。第20章介绍扩展的概念,包括扩展计算型属性、扩展构造器、扩展方法及扩展下标。第21章介绍内存管理的相关知识,包括内存管理的工作原理、强引用循环的概念及消除的方法、闭包中的强引用循环等。第22章介绍高级运算符,包括位运算符、溢出运算符及运算符函数。
第4篇为应用篇,含4章,通过实现两个完整的苹果应用,在实际工程项目中综合运用前面学习的Swift语言知识。第23章以计算器应用为例简要介绍了苹果应用的相关知识,包括如何建立一个简单的应用、iOS App的MVC架构以及应用的运行状态的切换。第24章介绍了如何编程实现计算器应用,包括界面设计、动作处理和运算逻辑等部分。第25章介绍如何基于MVC架构实现手游2048的过程,分别从模型层、视图层和控制层分析和实现。第26章为Swift语言的编程练习及参考答案,通过30个比较经典的编程练习题,讲解每个题的编程思路,并给出代码、相关代码说明及系统运行结果。
由于编者水平有限,有不少考虑不周的地方和不足之处,敬请使用本书的老师、同学及广大读者批评指正。
编者
2019年7月
第1篇基础篇
第1章预备知识/3
1.1Xcode特性3
1.2Xcode的使用4
1.3playground介绍7
第2章数据类型/10
2.1常量和变量10
2.2整型和浮点型16
2.3布尔型19
2.4元组型20
2.5可选型22
本章知识点29
参考代码30
第3章运算符/35
3.1赋值运算符35
3.2算术运算符36
3.3关系运算符37
3.4逻辑运算符38
3.5三元运算符40
3.6区间运算符41
本章知识点41
第4章字符串/42
4.1字符串的定义42
4.2字符串的操作44
本章知识点50
参考代码50
第5章集合/54
5.1数组54
5.2集合60
5.3字典63
本章知识点66
参考代码67
第6章控制流/72
6.1for循环72
6.2while循环73
6.3if条件语句74
6.4switch条件语句75
6.5控制转移语句78
本章知识点80
参考代码80
第7章函数/84
7.1函数的定义和调用方法84
7.2函数形参86
7.3函数类型89
7.4嵌套函数92
本章知识点93
参考代码93
第8章闭包/98
8.1闭包表达式98
8.2闭包的应用103
本章知识点106
参考代码107
第2篇高级篇
第9章枚举型/111
9.1枚举型的定义111
9.2关联值114
本章知识点117
参考代码118
第10章结构体与类/120
10.1基本概念120
10.2值类型与引用类型123
本章知识点126
参考代码126
第11章属性/128
11.1存储属性128
11.2计算属性130
11.3属性观察器133
11.4类型属性135
本章知识点136
参考代码136
第12章方法/139
12.1实例方法139
12.2类型方法141
12.3可变方法142
12.4下标方法142
本章知识点145
参考代码145
第13章类/150
13.1继承性150
13.2重载155
13.3类的构造158
13.4类的析构166
本章知识点168
参考代码168
第14章协议/175
14.1协议的使用175
14.2协议的继承性181
本章知识点183
参考代码183
第15章泛型/189
15.1泛型函数189
15.2泛型类191
本章知识点192
参考代码192
第3篇深入篇
第16章异常/197
16.1定义异常197
16.2抛出异常197
16.3处理异常199
本章知识点200
参考代码201
第17章可选链/202
17.1可选链的定义202
17.2可选链的使用203
本章知识点207
参考代码207
第18章访问控制/210
18.1访问级别210
18.2实例211
本章知识点214
参考代码214
第19章类型操作符/216
19.1类型检查217
19.2类型转换218
本章知识点219
第20章扩展/220
20.1扩展计算型属性220
20.2扩展构造器221
20.3扩展方法222
20.4扩展下标222
本章知识点223
第21章内存管理/224
21.1工作原理224
21.2强引用循环225
21.3闭包中的强引用循环230
本章知识点232
第22章高级运算符/233
22.1位运算符233
22.2溢出运算符235
22.3运算符函数235
本章知识点238
第4篇应用篇
第23章苹果应用/241
23.1一个简单的应用241
23.2MVC架构250
23.3应用运行状态252
第24章计算器/254
24.1界面设计254
24.2动作处理259
24.3运算逻辑266
24.4小结276
第25章手游2048/277
25.1模型层278
25.2视图层288
25.3控制层296
25.4小结305第26章编程练习及参考答案/306
【练习1】Fibonacci数列306
【练习2】求质数307
【练习3】求水仙花数309
【练习4】统计字符串中的各类字符个数310
【练习5】给定项数和数的和311
【练习6】自由落体反弹问题312
【练习7】求无重复的三位数312
【练习8】阶梯奖金计算314
【练习9】求完全平方数315
【练习10】求一年中的第几天316
【练习11】3个数比大小317
【练习12】打印九九乘法表319
【练习13】猴子吃桃问题320
【练习14】求分数数列的和321
【练习15】求n的阶乘的和322
【练习16】用递归法求阶乘322
【练习17】倒推年龄323
【练习18】逆序打印一个整数324
【练习19】回文问题325
【练习20】整数排序327
【练习21】求5×5矩阵对角线之和328
【练习22】折半查找329
【练习23】围圈报数330
【练习24】求分数的和332
【练习25】字符串排序333
【练习26】猴子分桃问题334
【练习27】考试成绩统计336
【练习28】子串出现的次数338
【练习29】数字加密问题339
【练习30】被9整除问题340
本书由浅入深介绍Swift语言及其应用开发实践。本书采用采用最新版的Swift 4和Xcode 10,在通过实例精讲语法知识的同时,每章都提供了大量的同步编程练习题和参考代码,本书还给出了30道经典的编程习题和解题思路、参考代码。
张亮,博士,北京航空航天大学计算机学院教师,2007年至今,主讲计算机学院本科核心课“计算机组成原理课程设计”及专业选修课“Swift开发实践”, 有12年教学经验,多次获得校级教学课题资助。已出版教材3本。