Swift (程序语言)

title: 历史.
content: 2010年7月,苹果开发者工具部门总监克里斯·拉特纳开始着手 Swift 编程语言的设计工作,以一年时间,完成基本架构后,他领导了一个设计团队大力参与其中。Swift大约历经4年的开发期,2014年6月发表。  苹果宣称Swift的特点是:快速、现代、安全、互动,而且明显优于Objective-C语言。Swift以LLVM编译,可以使用现有的Cocoa和Cocoa Touch框架。Xcode Playgrounds功能是Swift为苹果开发工具带来的最大创新,该功能提供强大的互动效果,能让Swift源代码在撰写过程中能即时显示出其执行结果。拉特纳本人强调,Playgrounds很大程度是受到布雷特·维克多理念的启发。  2015年6月8日,苹果于WWDC2015上宣布,Swift将开放源代码,包括编译器和标准库。  2015年12月3日,苹果宣布开源Swift,并支持Linux,苹果在新网站swift.org和托管网站Github上开源了Swift,但苹果的app store并不支持开源的Swift,只支持苹果官方的Swift版本,官方版本会在新网站swift.org上定期与开源版本同步。
title: 特色.
content: Swift取消了Objective-C的指针和其他不安全存取的使用,舍弃了Objective C早期套用Smalltalk风格的语法,全面改为句点表示法(dot-notation)。Swift具备类型推导(type inference)。同时,它提供了类似C++、C#中的命名空间(namespace)、泛型(generic)、运算符重载(operator overloading)。Swift被简单的形容为 “没有C的Objective-C”(Objective-C without the C)。
title: 类型和变量.
content: 在Cocoa与Cocoa Touch的环境下,许多共享的类都放在Foundation Kit库下,这些类别包含了NSString 字串库(使用 Unicode),还有集合类别 NSArray 与 NSDictionary。Objective-C 提供了语法糖的方式让这些物件可以整合在同一个语言里。例如NSString之间合并的表示法如下:  过去Cocoa(以及Cocoa Touch)的架构总是被分成两种版本,一种是可变的(mutable),也就是可以在执行时期(runtime)改变;另一种是不可变的(immutable),其初始值不可改变,例如NSArray与NSMutableArray就是阵列的两种版本。Swift语言延续这个传统,但简化为使用 let 关键字去设定常数(constant variable)。可变的(Mutable)对象使用 var 关键字,不可变的对象则适用let关键字。Swift语言使用类似C#或Javascript的var定义变量,但特性又不尽相同。Swift不直接指派初始值给变量,变量无默认值,因此使用var变量之前必须先初始化,不然将发生编译时期的错误。  为了方便使用,Swift提供Optional类型来宣告nil-free references。宣告Optional只需要在类型后面加上问号(?)即可。一旦var变量宣告为Optional的,其初始值就会被默认为nil。Optional本质上是enum,定义了None和Some两种类型,nil即是Optional.None。
title: 函数库、执行时期与部署.
content: Swift在 Mac OS 和 iOS 平台可以和 Objective-C 使用相同的执行时期(runtime),因此Swift 程序能运行在目前已存在的平台上,包括 iOS 6 和 OS X 10.8或更高的版本。 更重要的, Swift 和 Objective-C 的代码可并存于同一程序代码, 这种延伸就如同 C 和 C++ 的关系一样。  为了吸引开发人员和复用已存在的代码,Xcode 6允许在 app target 导入 Objective-C 头文件供给 Swift 使用,通过 Objective-C 的桥接头文件(bridging header)来供给 Swift。当开发人员添加 Swift 文件到现有的 Objective-C应用程序时,Xcode自动建立相应的头文件。例如,一个 Swift 类 "MyClass" 可用于 Objective-C 的方式为  codice_2.
title: 内存管理.
content: Swift全面使用自动引用计数(ARC)来管理内存,取代Objective C的垃圾回收功能。在Objective-C中,强引用(strong reference)即为非ARC中的retain,而弱引用(weak reference)即为非ARC中的assign。为了解决循环引用的问题,Swift提供unowned,不能设定为optional types,不能加上问号(?)或惊叹号(!)。
title: 除错以及其他元素.
content: Xcode的除错机制针对Swift语言提供REPL(Read-Eval-Print Loop, 这是源自emacs的术语)环境,可以利用Swift语法来评估或于其他程序互动,使Swift编程具有类似Python或Ruby带有的交互性界面(Interactive Shell)。
title: 讨论.
content: 长达600多页的 "The Swift Programming Language" 可以在iBooks免费下载。
title: 范例代码.
content: Swift不需要引入头文件(header file)或codice_12,不需要在每一行语句(statement)结尾加上分号。  变量声明方式如下: 用 let 宣告常量方式如下: Swift不支持隐式类型转换(implicitly casting),因此数值和字符串之间必须显式类型转换(Explicitly casting): 以下是Hello World程序: 使用Unicode字符,例如在文本中放心添加有不同语言的文字:

Summary: Swift编程语言,支持多编程范式和编译式,用来撰写基于macOS/OS X、iOS、iPadOS、watchOS和tvOS的软件。 苹果公司于2014年在苹果开发者年会(WWDC)发布了Swift编程语言。从设计上苹果公司让Swift与Objective-C共存在苹果公司的操作系统上。

Swift (programming language): Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. for iOS, iPadOS, macOS, watchOS, tvOS, and Linux. Swift is designed to work with Apple's Cocoa and Cocoa Touch frameworks and the large body of existing Objective-C code written for Apple products. It is built with the open source LLVM compiler framework and has been included in Xcode since version 6, released in 2014. On Apple platforms, it uses the Objective-C runtime library which allows C, Objective-C, C++ and Swift code to run within one program.