跟戴铭学iOS编程:理顺核心知识点
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第1章
Swift

1.1 Swift简介

使用Swift这门编程语言可以开发iOS、macOS、Linux server-side、云服务,甚至TensorFlow的程序。这门语言包含了很多现在开发者喜欢的语言特性,通过引入这些先进的语法概念,Swift可以使代码编写更加简洁,更容易编写出思路新颖的代码。这些特性包含了闭包和函数指针的统一、多返回值、泛型、支持方法、扩展和协议的结构体、函数编程模式等。苹果公司希望Swift能够成为C语言、C++和Objective-C的继承者,所以既让它具有了像类型、控制流和运算符一样的Low-Level Primitives特性,又让它具备了面向对象的一些高级特性。例如Module提供了命名空间,去掉了头文件,并且提供了do、guard、defer和repeat等具有创意的语法关键字和规则。

Swift是一种多范式(Multi-paradigm)的编程语言,可以使用面向对象和函数式的方式来写程序,如面向协议编程、直接操作内存等。像C语言那样进行低层级的位操作,但是这种操作在编译环节不容易检查,不安全、容易出错,所以这种操作又具有“unsafe”特性,一般只在与C语言交互时使用。

Swift作为一个强类型语言,在编译时推断完类型之后,变量和参数等都会有确定的类型,并且在编译时有着比Objective-C更严格的静态类型检查机制。这样的设计是为了使代码更加安全。为了安全,Swift要求变量在使用前必须初始化。Swift的编译器会阻止生成并避免使用nil对象。如果使用nil对象是必要的,那么可以使用Swift中的optional功能。optional里包含了nil对象。Swift定义了一个“?”语法,该语法会在编译时强制开发者处理值为nil的情况,让你确认已安全处理了这个值。通过LLVM编译器优化,Swift的构建速度非常快。

Swift已经开源,源代码、bug追踪器和邮件列表都能在Swift.org上找到。这个开源项目包含了一系列的子项目,包括Swift编译器命令行工具、标准库、高级功能的核心库、Swift REPL的LLDB调试器,以及用于分发和构建源代码的包管理工具(Swift Package Manager)。开源后的Swift获得了更多的贡献者,使得它能在更多平台和技术社区里运用起来,并且能够移植到更多的非苹果公司的平台上。