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 (programovací jazyk): Swift je multi-paradigmatický, kompilovaný, open source programovací jazyk od společnosti Apple, určený pro vývoj na platformách macOS, watchOS a iOS. Je zamýšlen jako alternativa k Objective-C a neměl by dovolit tolik chyb programátora jako Objective-C. Umí spolupracovat s existujícími frameworky Cocoa a Cocoa Touch. Swift je kompilován pomocí LLVM a ve stejném programu může být spolu s kódem v jazycích C, Objective-C a Objective-C++.