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

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”的错误。
专心做设计!开源跨平台应用开发框架Appverse Mobile 无线盛宴尽在阿里百川开放大会 医学界的Instagram:加拿大重症监护医生开发照片分享应用 2014中国移动开发者大调查第二批获奖名单揭晓 基于OpenStack的私有云开发部署实践 亚马逊云平台的迁移过程 【干货】微信企业号开发资源集锦 CSS生日快乐:CSS之父H&#229;kon Wium Lie访谈录 好友近2000万,绑定银行卡过千万,日会话近百万,招商服务号成功之道 一名程序员十年技术之路的思考与感悟 聚焦企业号、服务号典型案例 微信开发者大会深圳站正式开启 Objective-C之父Brad Cox访谈:我的编程之路 【先锋】完成B轮融资的TalkingData新商业模式:平台理念+跨界分析+技术开源 1/10计算资源,1/3耗时,Spark颠覆MapReduce保持的排序记录 Cookie已死,看Facebook、Google、Apple如何追踪用户 Clay.io基于AWS、Docker、HAProxy等的10X架构打造 经典服务/企业号案例来袭!2014微信开发者大会(深圳)亮点抢先看 移动应用云APICloud宣布完成A轮500万美金融资 从Apache Storm学到的经验教训 【CTO俱乐部走进天津】探讨如何成为技术团队管理者 不容错过!参加MDCC 2014移动开发者大会八个理由 你的钱被洗劫了么!APP安全问题来袭 10大最常见的数据库安全问题 南航微信服务号是如何炼成的? 超40项功能改进,虚幻引擎4.5正式发布! 【工具推荐】ER:可轻松构建一站式AJAX Web应用的开发框架 GraphLab:将大数据分析从理念运用到生产 支持Android 5.0:完全用Ruby的Ruboto框架迎1.2.0更新! 万物互联第一步:采用AllJoyn技术的智能硬件 【专访】敏捷专家何勉:让测试成为拉动组织敏捷实施的力量 Docker与微软合作 支持Windows Server 安装php+Mysql+Apache时出现的一个小问题,请高手指教! 取url中?后参数的javascript函数是什么? 怎么样来控制声道,如左声道,右声道,立体声? 简单问题,能介绍一下dual吗?? 新操作系统,老编程工具 这样能兼容吗? applet请教 衷心祝愿正在找工作的朋友们心想事成 浪费了几百份了,从来没人回答这个问题,窝气阿,up以下也好啊?????? 米卢是神奇的,中国队更神奇! 有谁知道哪里可以下载PDF Reference Manual中文版? 请教各位大虾! 怎样能把oracle数据库中的所有用户表的结构以及主键外键信息导出为sql 脚本? 踢得真不公平,真是21人踢我们一个人! 友情链接,我的网站http://fullstrong.myetang.com/ VB里面怎么编译出,不用安装的运行程序,请问在那里设置?(上限5分,人人有分)? 哪位大师知道在VC中怎样实现视频捕捉功能 有谁知道mp3的压缩和解压缩算法 问一下关于文件图标的问题。 pb6.5,win2000中文板,Oracle817.在oracle中连接数据库正确。在pb中连接数据库错误。什么内存出错,还有pbo7360.dll acess error之类的错 急!!请问如何将扩展名为PLB的文件转换为SQL文件 关于datagrid的selecteditem事件 谁能告诉我如何给回答对的人加分呀,散分啦 有谁知道哪里可以下载PDF Reference Manual中文版? 文件上传,然后把文件中的数据写入数据库,怎样做到。 问一个很菜的问题 100分在线等待:请介绍resin 如何在listview在作模糊查询。100分 ODBC下正确,BDE下出错?为什么?分数不够可以再加 项目中的角色 vb中怎样终止一个正在运行的应用程序? ADO编程,怎么把SQL Server里的DateTime取到windows的SYSTEMTIME或time_t里? 简单问题!Webbrowser控件 谁用过在那里加?还有程序中怎么打开如“http://www.csdn.net”的页? 小问题,抢分呀 将一个数据库a1的记录追加到另一个数据库a2记录后面的SQL语句怎么写? 怪事! 求助:如何在一个已经存在的数据库中增加一个列(即增加一个属性)?? 字符串打印时换行如何避免中文字符被分成两半? 请高手进入解决“不能拨号上网”的问题? 两个存放在不同目录中的ini文件用什么方法比较起来比较方便? 如何用vb语言实现把sql server 2000中的数据导出成dbf 文件格式 如何指定float 型的小数点后位数(比如2位) redhat7.3 Kdevelop2.1中为什么设置断点不起作用? 怎样同时删除几个表中有相同ID的记录? 怎么搞的,.exe突然变大。。。 为什么std::string也支持汉字,不是有wstring来支持宽字符串吗? 调节音量大小怎么做。 各位高手,如何在delphi中恢复备份了的sqlserver数据库 帮我看看如下链表代码有没有错误,回答必须是Yes Or No,如果No说明原因,前3个回答的每人给20 帮助!机器启动的问题! 需要什么權限才可以在sql server service manager中啟動遠程機器上的服務。 如何为ASP程序设置环境变量 居委会是怎么选举的 照明供电线路的路端电压基本上是保持不变的.可是我们在晚上照明供电线路的路端电压基本上是保持不变的,可是我们在晚上七、八点钟用电高峰时开灯,电灯比深夜时要显得暗些,这是因为此 用力踩脚踏板使自行车前进的问题后轮与地面间的摩擦力的方向朝前,是因为它的运动趋势朝后,为什么是朝后,后轮和前轮的运动趋势不是一样的吗? 社区居委会选举手册 照明电压高怎么办 用Na2CO3溶液除去混在NaCl溶液中的MgCl2杂质的原理Na2CO3和MgCl2反应生成的MgCO3应该不是沉淀吧,那不引入新杂质? 太阳能能转化风能吗? 往电瓶车电瓶里加硫酸好.还是加蒸流水好 溶于水的物质有哪些 一道物理中的受力分析题有一木棍斜放在如图所示的位置上,画出它所受的力以及每个力产生的原因. 2010年3月召开的第十一届全国人大三次会议,表决通过了关于修改《中华人民共和国选举法》的决定.这表明全国人民代表大会具有什么权? 溶于水的物质是() 一道物理受力分析题如图所示,两个倾角相同的滑杆上分别套A、B两个圆环,两个圆环上分别用细线悬吊着两个物体C、D,当它们都沿滑杆向下滑动时,A的悬线与杆垂直,B的悬线竖直向下.则下列说 二氧化碳 溶于水,生成H2CO3 …这物质是,盐还是酸? 都溶于水的物质可以反应吗氯化钠和硝酸钙会反应吗 两个物质什么条件下会反应 物理受力分析题两物体A和B,质量分别为m1和m2,互相接触放在光滑水平面上.对物体A施以水平推力F,则物体A对物体B的作用力等于多少? 38OV电压与家用电的区别?它们是怎样行成回路的? 若物体溶于水怎么办 求一道物理题,受力分析题,在如图所示的装置中.表面粗糙的斜面固定在地面上.斜面的倾角为 30°;两个光滑的定滑轮的半径很小,用一根跨过定滑轮的细线连接甲、乙两物体,把甲物体放在 家用电电压是220V,电脑接入电源之后,主机上面电压是多少v 中世纪的西欧文学特点很急!请教高手 一道容易受力分析题,急 家用电220可以用此电线吗 什么是石棉,什么又是蛇纹石,化学式是怎样的? 声音传播的速度与介质有什么关系? 铅酸蓄电池容量与内阻的关系?有没有相关的公式可以推算? 自行车脚踏板在水平状态和竖直状态时哪个省力,看到有解答说是力臂的问题,不太明白,我觉得那是轮轴吧,支点应该是牙盘和脚踏板连接处,可弄不清为啥力臂会变,最好详细些, 蜡烛的蜡滴到衣服上去了有什么方法清洗吗例如:蜡烛滴一大块到衣服上去? 微溶于水的物质沉淀吗?RT写化学方程式时产生微溶于水的物质写沉淀符号吗? 自行车为什么省力? 一道关于功与功率方面的物理题,电动机通过一绳吊起一质量为8kg的物体绳的拉力不能超过120N电动机的功率不能超过1200W要将此物体由静止用最快的方式吊高90m所用时间为多少?以致此物体在 微溶于水的物质产生沉淀吗? 耐火砖能耐多少度高温?主要成分是石棉么?我记得钢铁厂炼钢装钢水的铁炉内衬好像都用耐火砖,我记得铁的熔点是1538℃,这么一看耐火砖相当能耐高度了,到底能耐多少度高温呢? 一道功与功率的物理题质量为2t的汽车以恒定功率60kw从静止开始作直线运动,经10s速度为8m/s,此过程中汽车发动机做的功_________,汽车运动的位移范围_________ 什么物质溶于水,同时生成气体和沉淀? 北京地区哪里有卖侧三轮摩托车的(长江750)?全新车的价格是多少?(含京A牌照) 物理功与功率的题质量m=2kg的木块在倾角a=37°的斜面上由静止开始下滑,木块与斜面间的动摩擦因数为0.5求:(1)前2秒内重力做的攻(2)前2秒内重力的平均速率(3)2秒末重力的瞬时功率 家庭用电电线家里就一台电脑一台电视,一个电热水器(1500W),一个冰箱,一个电饭锅,一台微波炉(也不常用),一个电磁炉(比较少用),一支泡茶壶(1000W),跟一台一匹的空调,这样应该用多 热带种植园农业分布在热带雨林地区的发展中国家,这句话对吗? 一飞机质量为m 飞行中阻力与速度的平方成正比 当以速度v匀速飞行时 功率为P 功率增大到2p时 开始加速的加速度多大? 正常情况下,家庭用电的电压会是220v吗?如果电线电阻变化或者功率增大,导致电压损耗改变而匝数不改变, 为什么东南亚热带种植园农业发达 政企分开,政事分开,政资分开,政与中介组织分开分别是指什么?碧海蓝天回答的很好,如果能结合你熟悉的一个例子解释一下, 全国人大通过修订'老年人权益保障法'体现了全国人大怎样的性质和职权 怎样简单测量铅蓄电池电解液的浓度 一火车速度为6.9m/s匀速前进,旅客以1.5m/s在车厢行走,如果旅客行进方向与列车运动方向相同,那么1.旅客相对于车外树木的运动速度为( )m/s2.如果旅客在车上行进30m,那么火车相对于地面运动的 在运动会中,小翔参加了铅球比赛,如果他用200N的力,将重50N的铅球投到了10m远处,则下列关于他投球时做功情况的说法中正确的是:A.做功2000J B.做功500J C.没有做攻 D.条件不足,无法计算我对于 K2Al6Si6(OH)8O18(白云母),CaMg3Si4O12(石棉)用氧化物的化学式怎么表示Pb的化合价是+2或+4,它的氧化物形式怎么写蚁酸怎么写不好意思,如CaSiO3可以写成CaO·SiO2那么上面两种怎么写还有就是Pb3O4写 在平直的轨道上,作业车以5m/s的速度匀速运动,一列火车以15m/s的速度匀速运动,当货车司机发现前方400米处的作业车时,开始刹车,为了不发生相撞,则刹车后火车的加速度至少应为多大? 硅酸盐 是又名水玻璃么硅酸盐加上哪种材料粘度更大更方便 青石棉化学式为Na2Fe5Si8H2O24,写成氧化物形式为正长石化学式为KAlSi3O5,写成氧化物形式为 社区居委会工作总结 居委会个人工作总结 居委会主任工作总结 硅酸钠是最简单的硅酸盐,如果用二氧化硅和金属氧化物的形式来表示其组成,可表示为 硅酸钠的水溶液有粘性,是一种矿物胶,因此在实验室盛放NaOH溶液的试剂瓶用橡皮塞而不用玻璃塞,就是为 铅酸蓄电池的容量该如何计算? 请问电动自行车蓄电池硫酸与硫酸钠的配制比例是多少?还有就是硫酸钾与硫酸的配制比例又是多少呢? 什么是水玻璃硅酸盐模数 将下列各组物质混合后溶于水,得到无色溶液的是A、NaNO3、NaCl、Na2SO4 B、MgCl2、NaOH、KNO3C、CuSO4、CaCl2、MgCl2 D、BaCl2、AgNO3、KCl为什么是a?3q 如何用基准氯化钠标定0.1mol/L的硝酸银溶液 380V三相不接地系统,接照明用电电压,比如接三个1000W电灯各用一相,相对相电压是220V吗,如果用二相接串连两的个灯,各相电压还是220V吗, 怎样才能判断一种物质与一种酸会生成无色溶液我是九年级初学者,大哥大姐帮帮忙
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘