Swift语言研究

时间:2022-09-21 12:59:32

Swift语言研究

摘 要 swift,一门全新语言,Swift的目的,让每个人都能开发精彩的App。它源于Objective-C,在mac系统、ios系统上运行,它参考了C语言、JavaScript语言、Python语言、Java语言。语法简单,使用方便,并可与OC混合使用。具有很好的特性,可以快捷的开发软件应用。在今天有很好的学习价值和应用价值。

【关键词】swift ios,app Objective-C

苹果于WWDC(苹果开发者大会)的新开发语言,可与Objective-C共同搭建基于苹果平台的应用程序。Objective-C是Apple操作系统在导入Swift前使用的编程语言。

2010年7月,苹果开发者工具部门总监克里斯・拉特纳开始着手Swift编程语言的设计工作,以一年时间,完成基本架构后,他领导了一个设计团队大力参与其中。Swift大约历经4年的开发期,2014年6月公布发表。

Swift以Xcode为基础。Xcode是一款Mac app,用于开发所有的Mac app和iOS app。它有你需要的一切工具,让你能够创造出精彩的app体验。可以从Mac app Store免费下载它。

1 Swift概述

Swift是强大而直观的全新编程语言,它旨在提供资深开发者所需的自由空间和丰富功能,以创造出新一代前沿app。同时,它也为每个人打开了一个充满可能性的全新世界。Swift简单易学,即使你从未接触过编程也没问题。只要有想法,现在谁都可以创造非凡。

Swift的开发从很久之前就开始了。为了给Swift打好基础,苹果公司改进了编译器,调试器和框架结构。我们使用自动引用计数(Automatic Reference Counting,ARC)来简化内存管理。我们在Foundation和Cocoa的基础上构建框架栈并将其标准化。Objective-C本身支持块、集合语法和模块,所以框架可以轻松支持现代编程语言技术。正是得益于这些基础工作,我们现在才能这样一个用于未来苹果软件开发的新语言。

Objective-C开发者对Swift并不会感到陌生。它采用了Objective-C的命名参数以及动态对象模型,可以无缝对接到现有的Cocoa框架,并且可以兼容Objective-C代码。在此基础之上,Swift还有许多新特性并且支持过程式编程和面向对象编程。

Swift是一种新的编程语言,用于编写iOS和OSX应用。Swift结合了C和Objective-C的优点并且不受C兼容性的限制。Swift采用安全的编程模式并添加了很多新特性,这将使编程更简单,更灵活,也更有趣。Swift是基于成熟而且倍受喜爱得Cocoa和Cocoa Touch框架,他的降临将重新定义软件开发。

Swift开发者网站提供了足够的开发学习资源,由苹果公司提供支持。获取Swift的详细技术信息和高级特性。浏览开发者博客,随时跟进最新消息。免费获取指南、视频和示例代码等资源。

2 Swift特性

Swift支持多编程范式,它是编译式编程语言,用来撰写OSX和IOS应用程序。设计Swift时,苹果公司有意让Swift与Objective-C共存在苹果公司的操作系统上。

Swift的特点是:快速、现代、安全、互动,而且明显优于Objective-C语言。Swift以LLVM编译,可以使用现有的Cocoa和Cocoa Touch框架。Xcode Playgrounds功能是Swift为苹果开发工具带来的最大创新,该功能提供强大的互动效果,能让Swift源代码在撰写过程中能实时显示出其运行结果。拉特纳本人强调,Playgrounds很大程度是受到布雷特・维克多(Bret Victor)理念的启发。JavaEye的创始人Robbin发表意见:“对程序员来说,熟悉Swift语法也不过一天时间足够了。关键是要提供高级数据类型,简化Cocoa类库,否则用不用Swift都没区别。”

Swift取消了ObjectiveC的指针及其他不安全访问的使用,并舍弃ObjectiveC早期应用Smalltalk之语法,全面改为句点表示法(dot-notation)。同许多脚本语言一样,Swift可以推断变数类型(var,variant)。同时,它提供了类似Java的名字空间(namespace)、泛型(generic)、运算对象重载(operator overloading)。Swift被简单的形容为“没有C的Objective-C”(Objective-C without the C)。

在Cocoa与Cocoa Touch的环境下,许多共用的类物都放在Foundation Kit库下,这些类包含了NSString字符串库(使用Unicode),还有集合类NSArray与NSDictionary。Objective-C提供了语法糖(syntacticsugar)的方式让这些对象可以集成在同一个语言里。例如NSString之间合并的表示法如下:NSString*str=@"hello,";str=[strstringByAppendingString:@"world"];在Swift里,字符串的累积可以用加法(+)运算对象作为第一级公民(First-classcitizen)的方式直接完成,上述的例子可以简化为varstr="hello,";str+="world"。

为了方便使用,Swift还提供Optional的定义来声明nil-free references。声明Optional只需要在类型后面加上问号(?)即可。一旦var变数声明为Optional的,其初始值就会被默认为nil。Optional本质上是enum,有定义None和Some两种类型,nil即是Optional.None。

库、运行时期与部署,Swift在MacOS和iOS平台可以和Object-C使用相同的运行时期(runtime)。这意味着Swift程序可以运行于目前已存在的平台之上,包含iOS6和OSX10.8都可以运行Swift的程序.更重要的,Swift和Obj-C的代码可并存于单一程序内,这种延伸就如同C和C++的关系一样。

为了争取大量的开发人员并重复使用已存在的代码,Xcode6允许在apptarget导入Objective-C文件供给Swift使用,通过Objective-C的桥接头文件(bridging header)来暴露给Swift。当开发人员添加Swift文件到现有的Objective-C应用程序时,Xcode会自动创建这些头文件。例如,一个Swift知名的类"MyClass"可用于Obj-C的方式#import"MyClass-Swift.h"。

存储器管理,Swift全面使用自动引用计数(ARC)来管理存储器,取代过去ObjectiveC的垃圾回收功能。过去在Objective-C中,强引用(strong reference)即为非ARC中的retain,而弱引用(weak reference)即为非ARC中的assign.为了解决循环引用的问题,Swift提供unowned,不能设定为optional types,不能加上问号(?)或惊叹号(!)。

除错以及其他元素,Xcode的除错机制针对Swift语言提供REPL(Read-Eval-PrintLoop,这是源自emacs的术语)环境,可以利用Swift语法来评估或与其他程序交互,使Swift编程具有类似Python与Ruby交互性接口(Interactive Shell)。

类似Objective-C之处,基本数值类型(numeric types)大致相同(例如Int,UInt,Float,Double);大量的C运算对象被移出Swift,但又引入一些新运算对象。大括号被用于组群陈述(group statements)。

不同于Objective-C之处,陈述句(statement)不须再使用分号(';')做为退出,但分号还是可以在一行以内作为两个以上陈述的分隔。头文件(Headerfiles)不再需要。强类型(strongtype):类型推论或隐含类型(Typeinference);支持泛型编程。函数为第一等类型(first-classobject),这意味着函数可以作为其他函数的参数与返回值。运算对象可在类内重新定义(运算对象重载)。可以生成新的运算对象。字符串全方面支持Unicode。某些字元甚至可以成为语言的名称。许多C语言家族过去恶名昭彰的怪语法(error-prone behaviors)也被改变。

不再存在指针。指派(Assignments)不再回传值。正确写法是if(i==0),一般容易误写成if(i=0)会造成编译时期错误(compile-time error)。在switch的区块内不需要再使用break叙述句。另外,case后面都需要有可执行的代码(C或C++可连续使用多个case而不需要额外的代码),否则会发生编译错误。变数和常数都要被初始化,而且数组(array)的界限也要确认清楚。溢出(overflows)的问题。C语言没有强制整数类型(signed integers)的界限,常常在运行时间发生问题。Swift可以通过整数类型的max或min属性获取最大值或最小值。

阅读-分析-打印环路(REPL):在Xcode调试控制台包括内建Swift使用语法来评估,并与正在运行的应用程序进行交互,或者编写新的代码,看看它是如何工作的一个类似脚本的环境Swift语言的交互式版本。可以从Xcode的控制台内,或在终端。

3 Swift发展

2014-6-4《Swift中文版》翻译组在github上进行协同翻译。此项目开始不到一周就获得了1067个star。令人吃惊的是,该项目的发起人是北航的大三学生。2014-6-12《Swift中文版》第一版。

作为一项苹果独立的支持型开发语言,已经有了数个应用演示及合作开发公司的测试,相信将在未来得到更广泛的应用。某种意义上Swift作为苹果的新商业战略,将吸引更多的开发者入门,从而增强AppStore和MacStore本来就已经实力雄厚的应用数量基础。

开发者正在用Swift实现创举。Swift自推出之日起,便已被先人一步的开发者接受。很多公司用它改善了自己的app,有些甚至已经完全基于Swift开发出了全新的app。这种快速而高效的语言提供实时反馈,并能被无缝集成到现有的Objective-C代码中。因此,开发者不仅可以编写更安全、更可靠的代码,还可以节省时间,最终创造出更加丰富的app体验。

越来越多的开发者把Swift代码加入app中。有些开发者完全使用Swift开发全新app。一个用Swift构建的app。得益于Swift的简单易用和实时反馈,Getty Images在Swift后的短短几天内,就以100%Swift代码开发出了一款精美的iOS照片流app原型。

更出色性能表现带来更精彩App。以Swift编写的app快得恰如其名。比如,用Swift实现通用搜索算法,大大提升了完成速度。与OBJECTIVE-C相比快达8.4倍。

教师正在将Swift纳入课程。并非只有开发者意识到了Swift的潜力。一些顶尖大学和学术机构已经开始在计算机程序设计课程中教授Swift,其中很多即将在iTunesU提供免费课程。这就意味着,从入门编码到专业编程的转换前所未有地简单。

目前很多大学将Swift纳入课程,阿伯里斯特威斯大学;加州理工学院;库埃斯塔学院;德雷塞尔大学;福赛大学;普利茅斯大学;澳大利亚皇家墨尔本理工大学;斯坦福大学;慕尼黑工业大学;蒙特雷科技大学;加州大学圣克鲁兹分校;密苏里大学等。

4 Swift总结

操作优点:Swift对于初学者来说也很友好。它是第一个既满足工业标准又像脚本语言一样充满表现力和趣味的编程语言。它支持代码预览,这个革命性的特性可以允许程序员在不编译和运行应用程序的前提下运行Swift代码并实时查看结果。

应用优势:Swift将现代编程语言的精华和苹果工程师文化的智慧结合了起来。编译器对性能进行了优化,编程语言对开发进行了优化,两者互不干扰,鱼与熊掌兼得。

语法简便:Swift是编程语言的最新研究成果,并结合数十年的经验建设苹果平台的结果。结转自Objective-C的命名参数表示在一个干净的语法,使得API的Swift更容易阅读和维护。推断类型使代码更干净,不易犯错误,而模块消除了头,并提供命名空间。内存自动管理,而你甚至都不需要输入分号。

互动游乐:操场使编写雨燕代码难以置信的简单和有趣。输入一行代码,结果立即出现。如果您的代码通过一个循环运行一段时间你可以看它在时间轴助理进展。在时间线中的图表显示变量,组成一个视图时绘制每一步,并能起到一个动画Sprite Kit现场。尝试新的API来磨练你的Swift的编码技巧

专为安全:Swift消除了不安全的代码。变量总是初始化之前使用,数组和整数检查溢出,内存自动管理。语法被调整到可以很容易地定义你的意图。

作者单位

同济大学(软件学院) 上海市 200092

上一篇:论云计算技术在高校中的应用 下一篇:刍议计算机信息技术的广泛应用