前言 2014年,Apple公司推出了Swift语言,用于替代ObjectiveC语言开发面向Apple平台的应用软件。Swift语言有以下众多优点。 (1) Swift语言是一种强类型检查的语言,不属于同一类型的任意两个类型都不能互相赋值,例如无符号8位整型不能赋给有符号16位整型; 而且Swift语言可控制各种数据类型的越界存储。 (2) Swift语言是一种安全的语言,它对内存访问有严格的访问控制。 (3) Swift语言是一种非常接近自然语言的程序设计语言,程序代码的可读性强。 (4) Swift语言程序的执行效率高,而且Swift语言是一种开源的语言。 (5) Swift语言的SwiftUI框架技术使得用户界面设计简便高效。 (6) Swift语言的开发环境Xcode功能强大且易用,可以借助于命令行工程或Playground快速学习Swift语言。 现在Swift语言是Apple平台,如iPhone、iPad、Mac和Watch等的首选程序设计语言,Swift语言既适合编写科学计算程序,又适合图形界面设计。截至2023年6月,Swift语言的版本为5.8,Swift语言程序设计的开发环境Xcode的版本为15.0。本书基于这两个版本介绍Swift语言程序设计技术。 本书基于江西财经大学软件与物联网工程学院“iOS程序设计”课程的讲义扩编而来,全书共9章,各章的主要内容如下。 第1章为Swift开发基础,介绍Hello World工程框架、控制台工程设计方法、格式化输出方法等,并详细讨论了Swift语言中常量(常量的值称为字面量)、变量、整数类型和可选类型等,是学习Swift语言的入门知识。 第2章为Swift数据表示,详细阐述了Swift语言的数据结构及其表示方法,讨论了字符、字符串、浮点型和布尔型等基本类型,以及元组、数组、集合和字典等集合类型(或称构造类型)。基于这些知识,可将现实问题中的数据借助Swift语言表示为计算机可识别的数据。 第3章为运算符与程序控制,重点介绍了算术运算符、关系运算符、条件运算符、位运算符、区间运算符和赋值运算符等,基于这些运算符的知识,可将数据连接为表达式。本章还深入介绍了程序执行方式,即顺序执行、分支执行和循环执行等,详细介绍了分支执行和循环执行的程序设计方法。在这个基础上,可以借助Swift语言实现各种各样的算法。 第4章为函数与闭包,阐述了函数的定义与用法,并重点分析了多参数函数、多返回值函数、复合函数和递归函数的设计方法,同时,还介绍了一种特殊的函数,即无函数名的闭包函数的设计方法。这些知识可以帮助程序员实现模块化编程,即用函数组织同一功能的代码,使得众多程序员合作编程成为可能。 第5章为枚举与结构体,介绍了枚举与结构体两种构造类型,这两种类型是Swift语言中很重要的类型,特别是结构体类型,非常受Swift语言开发者的推崇,整个SwiftUI框架(Swift语言的界面设计框架)全是基于结构体设计的。本章详细地讨论了结构体的存储属性、计算属性、初始化器、索引器以及实例方法和静态方法等。枚举和结构体均属于值类型,使用安全方便。结构体具有面向对象程序设计的部分特点,如具有抽象特性、封装特性、继承特性(指服从协议)等。学习Swift语言必须熟练掌握结构体。 第6章为类与实例,阐述了类的定义与设计方法,深入分析了类的属性和方法,讨论了类的继承和多态。本章内容是面向对象技术的重要体现,Swift语言将类定义的变量或常量称为实例(instance),而不使用对象(object)这种传统说法。类是一种引用类型,在使用类时需要避免出现“强引用”而导致内存碎片。Swift语言中,类是单继承的,每个类只能有一个父类(或称基类)。Swift语言设计者建议可以使用结构体实现的功能,尽可能使用结构体,而不使用类。但是,Swift语言中,类仍然是一种强大的数据类型。 第7章为扩展与协议,重点讨论了扩展的设计方法和协议的定义方法。扩展解决了类型定义的不足,结构体和类等可以借助扩展,添加属性(指计算属性)和方法(不能覆盖原实体中的方法),甚至可以扩展系统类型。协议解决了多继承问题,一个类或结构体可以“继承”(或称服从)多个协议。本章还讨论了类型嵌套、类型判定、可选类型链和并行处理机制等。整个Swift语言是基于协议的,可以称其为面向协议的语言。 第8章为泛型与模糊类型,介绍了泛型的定义和用法,重点介绍了函数泛型和自定义类型泛型,继而讨论了模糊类型的概念和用法。此外,本章还介绍了自动引用计数(一种内存管理方法)、内存安全、访问控制和高级运算符等内容。 第9章为用户界面设计,讲解了界面设计的框架程序技术,讨论了带有用户界面的App的设计方法,阐述了绘图程序设计方法。本章内容使用了SwiftUI框架技术,该技术是Swift语言开发人员推荐的用户界面设计方法,可设计精美且功能强大的用户界面。 本书由江西财经大学软件与物联网工程学院“iOS程序设计”教学团队编写,其中,张勇编写第1、9章,罗凡编写第2、6章,李瑞友编写第3章,吴文华编写第4章,陈伟编写第5章,石宇雯编写第7、8章。全书由张勇统稿。全体编著者在写作过程中,感觉到Swift语言已经发展为十分成熟的计算机语言,已经具有了其他众多优秀计算机语言,如C/C++/C#、Java、Python、Delphi和BASIC等的特色,可作为一种高级计算机语言用于教学与科研。 Swift语言和其开发环境Xcode都在不断发展中,本书中的全部工程实例适用于Swift语言5.8以上版本和Xcode 15.0以上版本,本书的硬件平台为MacBook Pro M1,操作系统为macOS Ventura 13.4。设计好的App可以发布到Apple Store中,在全球范围内分享,这需要注册Apple开发者账号,借助Xcode生成发布版本。 配 套 资 源 程序代码等资源: 扫描目录上方的“配套资源”二维码下载。 课件、大纲等资源: 扫描封底的“书圈”二维码在公众号下载,或者到清华大学出版社官方网站本书页面下载。 微课视频(386分钟,131集): 扫描书中相应章节中的二维码在线学习。 注: 请先扫描封底刮刮卡中的文泉云盘防盗码进行绑定后再获取配套资源。 限于编著者的水平和经验,书中难免有疏漏之处,请同行专家、教师和读者朋友不吝赐教。 张勇2024年1月于江西财经大学麦庐园