说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Xcode 6.3 Beta发布,Swift 1.2带来哪些新变化?

HTML文档下载 WORD文档下载 PDF文档下载
苹果发布Xcode 6.3 Beta,更新Swift语言至1.2版本,修改OC语法,进一步提升Swift与OC代码交互性,其代码迁移工具可以帮助开发者实现代码升级。本文作者王芳杰在第一时间对Release Notes进行了完整翻译。

北京时间2月10日,苹果在面向开发者推送iOS 8.3 Beta的同时,还发布了版本号为6D520o的Xcode 6.3 Beta,其中便包含了iOS 8.3 Beta和OS X v10.10 SDK,并进一步提升了Swift与Objective-C代码的交互性,而Swift业已更新至1.2版本。


Xcode 6.3 Beta Release Notes看出,Xcode 6.3 Beta包含了很多颇为值得开发者期待的改变,共计50多处改动,同时修改了Objective-C的语法,足见苹果对Swift语言的重视。而其代码迁移工具可以帮助开发者将其代码从Swift 1.1(Xcode 6.1)升级至Swift 1.2(Xcode 6.3),具体执行编辑菜单(Edit)->转换(Convert)-至(To)Swift1.2即可。 具体更新如下:

Swift语言的增强

  • Swift现在支持目标增量编译,例如当一个文件改变时不会重新编译Target中的每一个文件。这个基于固有依赖分析。所以你依然会看到有很多文件在必要情况下被重编。如果你发现需要重编但没有重编的情况,请报一个Bug出来。清理Target后再编,会按照往常的流程进行。
  • 增加了一个新的Set数据类型,它提供了元素唯一化,且有完整语义的通用数据类型集合。它和NSSet类型桥接,提供和Array和Dictionary相类似的功能。
  • if let语句现在被扩展为可以支持多条条件判断:

if let a = foo(), b = bar() where a < b,let c = baz() { }

它允许你测试多种选择,并且包含一个bool判断。当然这种情况不包含嵌套判断。

  • let常量现在生成时不需要立即初始化,新的规则是let常量必须在被首次使用前初始化即可(和var一样)。或者说它只能被初始化,也就是说在初始化后它不能再被改变或者重新赋值,可用的模式如下:

let x: SomeThing if condition { x = foo() } else { x = bar() } use(x)

这个正常的来说需要var变量用法,尽管这里没有任何修改的操作。

  • "Static"静态方法和属性现在允许在class中使用(作为“class final”的别名)。你现在可以在类中声明一个静态存储属性,它享有全局存储空间和首次使用再初始化的惰性构造功能。协议Protocal现在会声明一个static的类型要求而不是声明一个class的要求。
  • 对于表达式闭包的类型引用有了几点改进:

  1. 含有单返回语句的闭包现在类型检查时以单表达式闭包处理。
  2. 匿名的且含有非空返回类型的单表达式现在可以用在Void上下文中。
  3. 多表达式的闭包类型的情况可能无法被类型推断出来,这归功于缺乏返回类型的情况能被正确的推断出来。

  • Swift中的枚举类型现在可以通过@objc关键字导出到Objective-C中。@objc的枚举类型必须定义一个整型的原始类型,并且该枚举不能泛型化或者不能使用关联值。由于Objective-C中的枚举类型没有命名空间,所以导出到Objective-C中的枚举类型以枚举名字和case项目名字的组合的方式使用。 比如在Swift中的声明:

@objc enum Bear: Int { case Black, Grizzly, Polar }<br>

导出到Objective-C:

 typedef NS_ENUM(NSInteger, Bear) { BearBlack, BearGrizzly, BearPolar };

  • Objective-C语言的扩展语法现在可以判断出Objective-C API中指针或者block的是否为空,同时允许不带ImplicitlyUnwrappedOptional协议地导出Objective-C API函数。
  • Swift现在可以部分支持导入C的联合类型,包括unions、bitfileds、SIMD vector类型以及其他Swift的不支持的C特性。这些不被支持的元素不能在Swift中的直接访问,但是在Swift中,Objective-C或者C可以以参数或者返回类型的方式使用。这包括Foundation NSDecimal类型、GLKit GLKVector和GLKMatrix类型,以及其他一些类型。
  • 被导入的C结构体现在在Swift中有一个默认的构造器,它会将结构体中的所有的元素初始化为0,例如:

import Darwin var devNullStat = stat() stat("/dev/null", &devNullStat)

如果一个结构体的元素不能被正确的初始化为0(比如被标记为新的_nonnull标示符时),这个默认的构造器将会终止。

  • String的索引类型间新的转换API现在可以用了,如String、String.UnicodeScalarView、String.UTF16View以及String.UTF8View, 同时每个String View转换为String的函数也可使用。
  • 类型值在println函数或者字符串内插算法中现在可以打印完整的类型名称了:

toString(Int.self) // 打印 “Swift.Int" println([Float].self) // 打印 "Swift.Array<Swift.Float>” println((Int, String).self) // 打印 "(Swift.Int, Swift.String)"

  • 一个新的“@noescape”属性可以用在函数的闭包参数上,这意味着这个参数是唯一可被调用的(或者用在函数调用时以参数的方式出现),其意思是它的生命周期比函数调用的周期短,这有助于一些小小的性能优化,但最重要的是它屏蔽了闭包中对self.的需求。这使得函数的控制流比其他更加透明。在未来的beta版本中,标准库函数将普遍采用这种特性,比如autoreleasepool():

func autoreleasepool(@noescape code: () -> ()) {   pushAutoreleasePool()   code()   popAutoreleasePool() }

  • 相比Swift 1.1,Swift 1.2在很多方面的性能上有本质的提高,比如多维数组算法更快,未优化的代码更加快速。
  • 表达式类型的错误诊断有了很大的提高。
  • 很多通用表达式的检查效率有很大提高,这个有助于降低编译时间和减少“expression too complex”的错误。
如何用SQL查询日期型字段?-Delphi资料 如何在数据库中存放avi文件-Delphi资料 如何在注册表中注册BDE-Delphi资料 筛选数据-Delphi资料 实现不同数据库系统之间的数据转移-Delphi资料 使 用WISQL32 同 时 访 问SQL SERVER 和SYBASE 数 据 库Delphi资 使用Session构件可以在打开有密码的库时不用输入密码-Delphi资料 使用SQL实现字段数据的模糊查询-Delphi资料 数据表的索引被损坏了怎么办-Delphi资料 数据库的密码、日期显示-Delphi资料 数据库应用程序开发中图像数据的存取技术-Delphi资料 数据库中图像数据的存取技术-Delphi资料 数据库转换-Delphi资料 数据浏览部件的应用及编程-Delphi资料 数据文件路径的管理-Delphi资料 随意控制DBGrid每一行的颜色-Delphi资料 通过DELPHI实现JAVA调用ORACLE数据库数据 通过编写代码来设置数据库的别名-Delphi资料 为Delphi数据表格增加彩色 为Delphi提供Pack和Undelete功能 为Delphi中数据库报表加网格 为数据库报表加网格-Delphi资料 为数据库建立索引-Delphi资料 掀开SQL Server 7.0的面纱-Delphi资料 限制数据库记录数-Delphi资料 向数据库发送密码-Delphi资料 一个关于字符串的小问题-Delphi资料 用 QuickReport for Delphi 制作报表 用Delphi 开发数据库程序经验三则 用Delphi 实 现 不 同 数 据 库 系 统 之 间 的 数 据 转 移 用DELPHI本身的控件输出TABLE表数据 提个弱问! 使用treeview控件,我想给它们的节点图标都换一下,可它默认图标都在上面,怎么去掉默认的。 有牛人吗?准考证英文怎么说? 请大家帮我看看,我的机器是怎么回事?我的机器很不稳定!!! 我为大家共享的资源.找我的人太多了,我吃不消.在这里列BILL.大家看看,书不算太多。 很傻的问题,在线等 ★★如何实现按一下按钮可以终止一个正在运行中的循环?请举个例子,谢谢! 谁能帮我提供一点资料或文档! 告急?(在线等待) 用正则表达式,怎么验证日期(yyyy-mm-dd)的输入啊? kao~ 请教有关MSWORD9.OLB的帮助文档是哪个? 怎样知道一个调度执行失败或没有执行???(MSSQL7)上火呀~~~ 如何将自己定义的记录类型转化成Tmemorystream对象? c++builder5的下载地址? 做个调查,来者有分。 ODBC下的数据库查询,急!急! 初学者的问题--com dll服务器如何在客户程序中使用? 如何统计 DBGrid 中记录的个数???? 请教:m_fLogfile.Read(pBuffer , sizeof(VNumAndPassWord)); 错在哪? 谁能替我做一张图片啊? 气死人了,安装红帽子在输入根口令时遇到的尴尬:( 奇怪的oracle数据库错误? 公布我的软件了——网络邮盘,国内日下载量>1000,国外<10 关于堆和栈的队! 请问,准考证的英文怎么说? ASP终极开发:请成功用INSTALLSHIELD设置好IIS的高手朋友进来看看。100分全散了!!!!! 是屏保的问题?还是硬件故障? 紧急救命啊!各位大虾:)98关机时断电出现的故障 初级问题,请教大侠 在C#里面如何取得这个SQL値那? 请教, 扫描的问题... 不好意思,还有问题,关于span,恳请高手答完再下班。 心情郁闷,各位朋友安慰我一下好么。 如何注册JDBC驱动啊!我手头好多的驱动但是我不知道如何的注册这些驱动 在RICHEDIT里怎么实现换行输出? 200分求快速取中值的算法!(thirdapple) Flash Action 如何定时,就像Javascript中的setTimeout()? 保护的问题 用一个关于Printer对象的问题?各位大虾,初来乍到,请多多关照。 请问如何自动提交一个FORM? 请问各位师兄:web开发如何起步?例如使用JSP? 求助! 如何知道电脑中的网卡是什么型号的? 大家请帮忙,兄弟必重谢,分都给了 如何制作含有msdn数据库的安装程序 Web Service服务程序如何增加对SSL的支持? 怎么還可以上網﹐向各位大蝦求救 请问如何自动提交一个FORM? 如何处理并发访问! 如何在网页中打开*.ocx组件?是否能打开? 如果给我再来一次的机会...我还是想说... admit和recognize的区别作为 承认 时的区别admit和recognize作为 承认 时的区别 what he has done shows that he is not a man -------.答案是whom you can believe in为什么that you can believe 为什么不是这个 闲居初夏午睡起二绝句这两首古诗描写的时候什么时候的情景.还要有从古诗中找出的理由列出来 汉译英.高中英语句子.并用到后面括号中的相关词组.1.超过60%的学龄儿童家中拥有电脑.(access to )2.她与他的心情并不合拍.(in tune with)3.他声称已经十天没有吸烟了.(abstain from)4.大部分的 Can you guess ______?A.what is that man B.who that man is C.whom that man is D.who is that man 英语翻译用中文 或罗马音 来翻译英文,如有大神音译,必定造福后人,比如学日语,不要,就是音译,牙麦迭 英语中我你他顺序怎么排 Who is that man?选哪一个 Cool,Guess! 林俊杰的one lucy has been my friend since she since she came to china 对划线句子提问划线句子是since she came to china __________ __________ __________lucy __________ your friend ? 快一点谢谢 现在才明白、可能已经晚了、英语怎么翻译 what's the difference between watching a movie and reading books求作文 请各位帮我用英语翻译一下这几句话!急需,急需!请各位英语高手帮我翻译一下,感谢万分,我急需!寒假就要到了,这次寒假我想去比利时的首都布鲁塞尔游玩.布鲁塞尔是比利时的首都,是一座古 can you guess ( ) the man is 用who 还是whom april 短语汉译英!"第二外语"用英语怎么说?是second foreign language吗?掌握一门二外多么重要啊 怎么翻译? “你明白吗?”英语怎么翻译? april 有关孔融让梨的故事(完整的)快! Can you tell me -that man is 为什么不填what 问职业,而用who? April Fool愚人节乐一乐夫妻离婚争孩子,老婆理直气壮说:“孩子从我肚子里出来的,当然归我!”老公说:“笑话!简直是胡说八道.取款机里取出来的钱能归取款机吗?还不是谁插卡归谁! 孔融让梨英语版英语,不要是汉语 他整个早上都很忙.请用英语现在完成时翻译 考四级该怎么复习 So far I ____(make) quite a few friends here. 谁知道这个是什么字.懂有个字 上面是一个 厌(简体) 下面是一个 鬼 字 APRIL FOOL'S DAI he went to New Zealand last month,But he________(make)quite a lot of friends so far Mary is _______ than Alice.A.more experienced a teacher B.a more experienced teacherC.more an experienced teacher D.more experienced teacher 大学考英语四级.平时应该怎样复习?..考过1次了,成绩不怎么样,不知道该怎样复习,. full version的中文是什么 速求速求 Mary’s hair is longer than_____ Last year,there 15 students in our team.This year,there are 20 students in our team.(变同义句)句型转换1.___Would you mind going back to your seat?(作否定回答)___No,not ____ ____.2.I enjiy running every morning.(改同义句)I____________ 49plants avait you in the full version. Sandy is ___at playing soccer than SimonA.better B .good C.wekk D.best STAY FOOL,STAY HUNGRY --- YOU'LL BE HAPPY .以前男朋友在我博客里的留言, try the full version什么意思 Sandy is (tall and thin).对括号部分提问.( )( )Sandy ( Sandy 后只有一个空,look like以外还能用什么好呢? 快考四级了,怎么复习?各位高手们出招吧最好具体点 make friends 有过去式么?高手给说说.帮忙翻译下2个句子:1."昨天我交了个朋友" (不知道用make 还是made)2.我交了两个朋友..(make friends 是交朋友,可数量怎么表示呢?make 2 friends ).. What on earth is that 与 What is that exactly (那到底是什么?) 两句一样吗? I'm not a fool,okay?someone why don't you just go to hell!You guys deserve each other!You HAPPY NOI'm not a fool,okay?someone why don't you just go to hell!You guys deserve each other!You HAPPY NOW这是完整的 full version 侃的粤语读音?粤语怎么读 "闲居初夏午睡起二绝句"描写了什么季节?一.要长!二.不能和别人的一样!三.要两首都要回答!四.要有季节!五.分明一二两首!六.要有意思! Tom can make friends______(easy)because he is very outgoing that is what I trying to do 是什么从句Jim,that is what I trying to do 是什么从句 闲居初夏午睡起二绝句描写什么时候的情景松阴一架半弓苔,偶欲看书又懒开.戏掬清泉洒蕉叶,儿童误认雨声来. )20.Tom is ______than Ben.28.Are you in china ______ January Yes,I usually in china _____January.A.in,on B.in,in C.at ,in)29.Was it ______yesterday Yes,it was.A.snow B.cloudy C.rains)30.My friend peter _____very well.A.swim B.running C.sings)31.The r 求“数”字广州话读音. 闲居初夏午睡起二绝句描写什么时的情景,从诗中找理由 I .make new friends since i moved here.A.can't B.couldn't C.haven't been able to.D'm not able to请帮我选正确答案以及原因 闲居初夏午睡起二绝句描写了怎样的情景 This is the restaurant___we enjoyed our meal last weekA.that B.in which C.which D.in that Jim has quite few friend here .So he ofend feels lonely. 侃的读音? 1.You are looking for the doctor.She is busy.2.This is our school.You visited last week.把它们改为定语从句 confess/admit的区别 英语翻译this drill only available in the full version gst professional完整的 任务型阅读!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘