简介编辑本段
Swift编程语言,支持多编程范式和编译式,用来撰写基于macOS/OS X、iOS、iPadOS、watchOS和tvOS的软件。苹果公司于2014年在苹果开发者年会(WWDC)发布了Swift编程语言。从设计上苹果公司让Swift与Objective-C共存在苹果公司的操作系统上。
swift语言
基本信息编辑本段
中文名 雨燕
外文名 Swift
发布时间 2014年6月2日
设计者 克里斯·拉特纳与苹果公司
实现者 苹果公司
源 于 Objective-C
操作系统 macOS、iOS、iPadOS、watchOS和tvOS
参考语言 C、JavaScript、Python、Java
文件扩展名 .swift
是否区分大小写 是
编程范型 多范式(面向对象、泛函、指令式、组块结构化)
类型系统 静态、强类型、类型推论
许可证 开放
历史编辑本段
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上定期与开源版本同步。
特色编辑本段
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)。
类型和变量
在Cocoa与Cocoa Touch的环境下,许多共享的类都放在Foundation Kit库下,这些类别包含了NSString 字符串库(使用 Unicode),还有集合类别 NSArray 与 NSDictionary。Objective-C 提供了语法糖的方式让这些对象可以集成在同一个语言里。
过去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。
函数库、执行时期与部署
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全面使用自动引用计数(ARC)来管理内存,取代Objective C的垃圾回收功能。在Objective-C中,强引用(strong reference)即为非ARC中的retain,而弱引用(weak reference)即为非ARC中的assign。为了解决循环引用的问题,Swift提供unowned,不能设定为optional types,不能加上问号(?)或惊叹号(!)。
调试以及其他元素
Xcode的调试机制针对Swift语言提供REPL(Read-Eval-Print Loop, 这是源自emacs的术语)环境,可以利用Swift语法来评估或于其他程序互动,使Swift编程具有类似Python或Ruby带有的交互性界面(Interactive Shell)。
类似 Objective-C之处
基本数值类型(numeric types)大致相同 (例如Int, UInt, Float, Double)大量的C 语言运算符被移出Swift, 与此同时引入了新运算符。大括号被用于组群陈述(group statements)。变量之赋值使用等于符号, 但比较则使用“连续两个等于”(==)操作数。还有一个新的操作数,“连续三个等于”(===)被用来判断常量或变量之间是否为同一对象之实例(instance)。中括号([], Square brackets)用于数组的表示, 宣告数组之后, 可以指派索引值(index)来进行元素(element)之访问。控制陈述(control statement), for, while, if, switch 与Objective-C都十分类似, 但有延伸功能, 像是 for in 用于集合(collection)的轮询,switch 还可以接受非整数的cases条件值, 诸如此类。不同于 Objective-C之处
陈述句(statement)不需要用分号(;)结束,但分号可以作为一行上两个以上语句的分割符。不需要头文件(Header files)。注解方式 /* ... */ 嵌套,指注释里可以再有注释。强类型类型推论或隐含类型(Type inference)支持泛型编程。函数成为第一等类型(first-class object),这意味着函数可以作为其他函数的参数和返回值。运算符重载。运算符可在类内重新定义。定义新的运算符。字符串全方面支持 Unicode。规避了C语言家族的易错行为:不存在指针。赋值语句没有返回值。若将if (i==0)误写成if (i=0),将造成编译时期错误。在switch 的区块内不需要使用 break 语句。另外,case后面都需要有可执行的代码(C或C++可连续使用多个case而不需要额外的代码),否则将触发编译错误。变量和常量必须初始化才能使用,而且数组(array)的边界必须明确确认。溢出(overflows)的问题。C语言没有强制整数类型(signed integers)的界限,常常在触发执行时期错误。Swift通过整数类型的max或min属性获取最大值或最小值。应用范围编辑本段
Swift是一种新的编程语言,用于编写iOS和macOS应用。Swift结合了C和Objective-C的优点并且不受C兼容性的限制。Swift采用安全的编程模式并添加了很多新特性,这将使编程更简单,更灵活,也更有趣。Swift是基于成熟而且倍受喜爱的Cocoa和Cocoa Touch框架,他的降临将重新定义软件开发。
Swift的开发从很久之前就开始了。为了给Swift打好基础,苹果公司改进了编译器,调试器和框架结构。我们使用自动引用计数(Automatic Reference Counting, ARC)来简化内存管理。我们在Foundation和Cocoa的基础上构建框架栈并将其标准化。Objective-C本身支持块、集合语法和模块,所以框架可以轻松支持现代编程语言技术。正是得益于这些基础工作,我们才能发布这样一个用于未来苹果软件开发的新语言。
Objective-C开发者对Swift并不会感到陌生。它采用了Objective-C的命名参数以及动态对象模型,可以无缝对接到现有的Cocoa框架,并且可以兼容Objective-C代码。在此基础之上,Swift还有许多新特性并且支持过程式编程和面向对象编程。
操作优点
Swift对于初学者来说也很友好。它是第一个既满足工业标准又像脚本语言一样充满表现力和趣味的编程语言。它支持代码预览,这个革命性的特性可以允许程序员在不编译和运行应用程序的前提下运行Swift代码并实时查看结果。
应用优势
Swift将现代编程语言的精华和苹果工程师文化的智慧结合了起来。编译器对性能进行了优化,编程语言对开发进行了优化,两者互不干扰,鱼与熊掌兼得。Swift 既可以用于开发“hello, world”这样的小程序,也可以用于开发一套完整的操作系统。所有的这些特性让 Swift对于开发者和苹果来说都是一项值得的投资。
主要功能编辑本段
语法简便
Swift是编程语言的最新研究成果,并结合数十年的经验建设苹果平台的结果。结转自Objective-C的命名参数表示在一个干净的语法,使得Swift的API更容易阅读和维护。
推断类型使代码更干净,不易犯错误,而模块消除了头,并提供命名空间。内存自动管理,而你甚至都不需要输入分号。
其他功能
Swift特有许多其他的功能,使你的代码更传神:
闭包的统一与函数指针元组和多个返回值泛型快速而简洁的迭代范围或集合支持的方法,扩展的协议结构。函数式编程模式,例如:映射(map)和过滤器(filter)互动游乐
Swift Playgrounds使编写语言代码难以置信的简单和有趣。输入一行代码,结果立即出现。如果您的代码通过一个循环运行一段时间你可以看它在时间轴助理进展。在时间线中的图表显示变量,组成一个视图时绘制每一步,并能起到一个动画SpriteKit现场。当你在Playgrounds上完善你的代码,只需将代码到您的项目。有了Playgrounds,您可以:
设计一种新的算法,看其工作的每一步创建新的测试,验证他们推动到您的测试套件前工作尝试新的API来磨练你的Swift的编码技巧REPL
阅读-分析-打印环路(REPL):在Xcode调试控制台包括内建Swift使用语法来评估,并与正在运行的应用程序进行交互,或者编写新的代码,看看它是如何工作的一个类似脚本的环境Swift语言的交互式版本。可以从Xcode的控制台内,或在终端。
专为安全
Swift消除了不安全的代码。变量总是初始化之前使用,数组和整数检查溢出,内存自动管理。语法被调整到可以很容易地定义你的意图 - 例如,简单的三个字符的关键字定义一个变量(var)或常量(let)。
在Swift的安全模式被调整为强大的Cocoa和Cocoa Touch的API。认识和妥善处理其中的对象是零案件是基本的框架和Swift的代码使这个非常容易。添加一个字符可以代替曾经Objective-C中整行的代码。这一相互配合,使构建iOS和Mac应用程序比以前更加容易和安全。
高效强大
Swift是为高效而强大的编程而创建的语言。Swift采用了高性能的Apple LLVM编译器,Swift代码转化为优化过的本地代码,充分利用现代化的Mac,iPhone和iPad的硬件。语法和标准库也非常简洁,让编程的流程大大缩短、简化。
Swift采用了C和Objective-C语言中的优秀成分。Swift也包括了很多其他语言的特征,如类型,流程控制和运算符。Swift还提供了面向对象的特性,如类与协议。
1
词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。