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

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”的错误。
继智能手机后的下一个战场:智能家居 鏖战云端——亚马逊的生存法则 如何保住公司的人才:创造良好的学习氛围 主宰全球的10大算法 专访Google数据科学家彭晨:大数据成为潮流走近各行各业! 强横Metal技术来袭,能否取代OpenGL? Swift横空出世,Xcode 6 Beta有了哪些新变化? 《近匠》GameMei:简单易用、快速开发商用游戏 Gartner:2014年一季度浪潮服务器出货量中国第一 【技术博客推荐】张安站:大数据时代下的商业存储 Amazon继续登顶IaaS魔力象限,榜眼是微软而非Google 友盟Q1移动互联网报告:解读三线城市移动互联网用户 智能生活 “视”不可挡——首届TCL杯HTML5智能电视开发大赛等你来挑战 Mobile First!开源HTML5游戏引擎Kiwi.js 1.0正式发布 天天用的开发环境,你真的了解吗? 物联网时代,你的汽车也在转型 触宝输入法产品经理解析iOS 8第三方输入法开放程度 专访联想谢政维:功耗和价格是天蝎项目最大障碍! 《近匠》蚁视科技创始人覃政:ANTVR,虚拟现实的新生 后棱镜门时代:开发者保护应用安全的5大技巧 专访许鹏:谈C程序员修养及大型项目源码阅读与学习 65种GPU性能测试,AMD开源驱动领先! 一周消息树:我们从WWDC 2014收获了什么? 精益设计:“纸上谈兵”的说服力 指尖上的艺术——如何运用代码发挥无限创意 周末巨献:100+诡异的数据集,20万Eclipse Bug、死囚遗言等 TIOBE 2014年6月编程语言排行榜:Swift能否取代Objective-C? 移动游戏后端:开发还是购买?你必须知道的6件事 Vuforia SDK 3.0发布在即 全球注册开发者已逾10万 最受职场青睐的十大热门云计算技能盘点 Android Bootstrap:开发也能用模板,省时又省力! 新书介绍:<<好水手,坏水手-怎样在水园出名>> 教你在水园成名的技巧..hehe 请问哪位义士是武汉的?能否帮我看看是什么问题? 急!我需要VB好用的压缩控件DLL,只要有DLL就可以用的那种,不要安装。(控件是免费的哦!~) 请问:我有一个表,因为字段的较多,且每个字段长度较大,所以生成报表时每两页A4纸才能容下一条记录,这在QuickReport中如何处理。谢谢。 如何判断我的窗体已经打开? 我怎样汇总两个字段都一样的数目呢?急!◎ 打印的问题! NT启动问题 有没有宁波的兄弟啊,有哪儿要PB或delphi的好点的公司。请介绍下。 关于远程登陆的问题??回答者一定重分相谢。 同志们,朋友们,有空来这里玩玩! 为什么用gethostbyaddr(ip,size,PF_INET)不能把机器名得到????? 如何将Delphi程序改为汇编? 非常着急,各位高手一起来帮我研究一下这个工作流系统怎么用? 简单问题,肯定给分! 据说高程的通过标准是上下午加起来算了? 请斑竹帮忙 请问各位前辈: 在执行中出现"incorrect syntax near 'JCSZ'"的错误提示,如何解决? 下标越界是什么意思啊? 一个基础性的问题,同样一份C/C++源代码可以在UNIX 和WINDOWS运行需要具有的条件是啥??? 在一台计算机上安装两个键盘同时接受输入的问题 对XML文档中的数据能不能进行SELECE操作???? 如何用JAVA实现263邮件那样的邮件粘贴功能 请教各位大哥,小弟最近遇到麻烦,为什么我的程序安装时,出现expsrv.dll无法注册的提示?expsrv.dll有什么作用?怎样闭掉? 如何在两个结构相同的库之间倒数?? 请问如何简单确定右键点击的是哪个控件? 有哪位高手可以给出windows98登录时网络服务的身份验证模块的程序或相关资料的呢?非常感谢啦 在CTreeCtrl中同时使用系统图标与自定义图标的问题?? SHGetFileInfo()为什么在Win2000下工作不正常? 请问高手:DataGrid的问题 jsp和servlet是怎样交互的? 请问 有什么方法能实现 在几个数中随机取出几个数 谢谢 请问:在执行文件DPR中有一段代码出现错误,请各问指点! 两个问题:1 关于.NET中 一个新控件propertyGrid1的使用问题;2 我想生成一个由lable和TextBox合成的控件(label在左,TextBox靠其右),怎么办? 分栏打印 依旧是undefined function mysqsl_connect()问题 急:如何在生成的exe中添加新的属性页,显示更多文件信息? V-DVD ROM!? MSDN上的例子需要uafxcwd.lib,怎么找不到呢? 请问窗口的other事件是如何触发执行的 JSP如何学习 vc在什么时候会引起小喇叭的叫声 请教高手,如果在VB里实现内存共享? 用什么方法可以转换图片类型?譬如将BMP格式的转换为JPEG格式的,请各位大哥给点提示!!! 关于vb script数组和函数功能的二个问题!高难度! 关天打印问题? 只能最小化到屏幕的左下角 *急:无为,acptvb,请帮忙看看http://www.csdn.net/Expert/topic/426/426766.shtm (有关XMLHTTP) 在php中要取出一段字符串的前n个字节,而又要判断最后一个是中文还是英文,如果是中文则将最后半个字符省略应该怎么做? 有在BCB5中用过sapi5朗读中文的朋友,高分送上! 最初级的问题,关于编译程序的。 滚动摩擦力和滑动摩擦力的英文是?标准的~~……我手上没有高中物理课本= = 在数位顺序表中,任何两个计数单位之间的进率都是10.()(为什么,说明理由) 牛顿第二定律的探究实验:为什么小车的质量要远大于勾码的质量?能给我个受力分析图吗?(用作图工具自己画,并附带些解释) 在9点9末尾添上一个0,原数的计数单位为什么缩小十倍 计数单位的进率都是十吗? 验证牛顿第二定律的实验中,为什么托盘和重物的质量要远比小车质量小很多? 在9.9的末尾添上一个0,原数的计数单位就什么 求解一道物理摩擦力的题,我觉得答案错了,所以问如图,两个水平力F作用在B C上.三个物体都处于静止状态,请问AC间摩擦力多少 BC减多少 C与地面的摩擦力多少?我主要不知道C与地面间摩擦力大 验证牛顿第二定律的实验中使砝码盘和盘内砝码的总质量远小于小车和车上砝码的总质量.为什么?还有…,一般来说,砝码盘和盘内砝码的总质量不超过小车和车上砝码总质量的10%。这个值 在9.9的末尾添上一个0,原数的记数单位就( ) 摩擦力包括重力吗?为什么二力平衡为拉力与桌面对物体的摩擦力有关!不爱答的不要答如图所示,用弹簧测力计水平拉动水平桌面上的物体,使其匀速直线滑动.以下叙述中的二个力属于一对平 验证牛顿第二定律试验中,为何有时要让砝码质量m远远小于小车质量M?,有时又不需要? 数字题:在0•9的末尾添上一个0,它的计数单位由多少变成多少 摩擦力实验中的压力是否只是指物体对桌面的压力? (二力平衡)手掌托一小石块,将它竖直向上抛出,设想如果手托石块加速向上运动过程钟,石块所受到的所有的力突然消失,那么小石块(立即做匀速直线运动并持续下去)我的问题:这里说的 在9.9的末尾添个0,原数的计数单位就( )A扩大10倍B不变C缩小10倍为什么 二力平衡的物体受摩擦力吗?我怎么都觉得只有静止在水平面上的物体才不受摩擦力,但今天上课老师说“二力平衡的物体不受摩擦力”,不能理解啊.谁的见解对?应该怎么理解? A同学用400N竖直向上的力去提质量为50KG,静止放在水平地面上的物体,物体所受的000合力为______.接着A同学改用100N水平向右的力去拉这物体,物体以0.5M/S的速度在水平地面上做匀速直线运动,此时 1.一个同学站在地上向下拉重物G=1000N,绳子最多能承受400N的拉力,试计算绕线方式2.用水平推力F将AB两木块挤压在竖直墙上静止,作AB受力图3.物体A重20N,滑轮重1N,弹簧测力计示数为25N则物体B重? 九年级物理关于《牛顿第一定律》、《二力平衡》的题1、牛顿第一定律(1)为什么行驶的汽车遇到意外情况时不能立即停车?注:我知道是因为汽车具有惯性,但是老师说这样回答不够严谨完 找出百宝箱的的密码答案:1,密码是七位数 2,这个数在200000与3000000之间,并且十位上是0,千位上是5个位上是最大的一个数,万位上的数和百位上的数相同,3,密码的十万位.万位.百位上的数字组成 1.行驶在河里的轮船,总是被迫偏向临近水流较______("急" 或 "缓")的地方.2.刻舟求剑中,人没有得到剑原因是他不懂得____的物理道理.3.下面正确的是A.打开酒精瓶盖后,闻到酒精气味是由于分子做 二力平衡 物体在平衡力的作用下是处于静止状态还是匀速直线运动状态,取决于A、原来的位置B、原来是静止还是运动C、原来的受力情况D、与前面三项都有关能再具体一些吗 一个九位数,最高位上的数字是最大的一位数,十万位和百万位上的数字都是1,万位上的数字是5,上的数字都是0,这个数写作( ),省略“万”后面的尾数记作约( )万. 为什么说压力、支持力、拉力、都是弹力! 科研人员乘气球进行科学考察,气球、座舱、压舱物和科研人员的总质量为990 kg.气球在空中停留一段时间后,发现气球漏气而下降,及时堵住.堵住时气球下降速度为1 m/s,且做匀加速运动,4 s内下 一个9位数,最高位和十万位上的数是6,其余各位都是5,这个数写作什么,省略到万后面的尾数约是 在数位顺序表中,从右向左数,第五位是( ),计数单位是( ),第九位是( ),计数单位是( ).计数单位是( 是不是应该填万级,亿级? 验证牛顿第二定律实验中,怎么样钩码的重力才近似等于拉力?用公式推倒下, 最高位是千万位的数是一个八位数,其中最大的九位数是几?最小的九位数是几? 整数的最小计数单位与小数的最大计数单位相差多少 九年级物理力学问题在不计摩擦和机械自身重力时,既可能省力又可能费力的机械是______.A.杠杆 B.动滑轮 C.定滑轮 D.滑轮组 一个数的最高位是亿位,这个数肯定是九位数.是对是错? 学过初三力学的进请给我传一套初三年级的力学综合的压轴题,不要太多题,但要经典其中有关浮力,机械效率,二力平衡等等 验证牛顿第二定律 沙桶和沙的质量很小时才认为他们的重力等于拉力?为什么? 一个数的最高位是亿位,这个数一定是一个九位数.对还是错 万级的计数单位是什么 1.一个长方体木块立在桌面上,用手指沿水平方向推他的下部,木块滑动;用手指推开他的上部,木块翻倒.这说明什么?2.短跑运动员起跑时用力向后蹬地,人就冲了出去,这里包含的物理知识是: 用定滑轮将重力为500牛的物体以1米/秒的速度匀速提升,不记摩擦.求(1)绳子的拉力;(2)10秒拉力做的功. 万级的计数单位有什么 求老师前辈们帮我解释为什么B是正确的.我知道其余三个都是错的,但不知道为什么B是对的. 当一物体在桌面上静止时,它受到的静摩擦力的大小,方向,作用点个是什么?!物理好的朋友帮忙答一下.有用的再多给!例如:一本新华字典在水平粗糙的桌面静止.那么它受到的静摩擦力的方向, 万级包括的计数单位有那些 如图所示,有一物体A置于托盘天平的托盘上,这时托盘秤的示数为3kg,弹簧测力计的示数为14.7N,此时正好达到一个稳定状态,请问:物体A的质量多大?(请写明步骤)(图上有一个托盘秤,秤上放 一个十位数,它最高位是(),从右边数第七位是(),计算单位是() 牛顿第二定律实验小车质量远远大于钩码质量推导 万位、十万位、百万位、千万位是万级上的四个计数单位.对还是错?请说明理由 一个九位数,他的最高位是( ),计算单位是( ) 初三摩擦力物理AB两物体紧靠着放在水平桌面上,用16N的水平推力推A,使他们一起向右作匀速直线运动,若要让AB在水平桌面上一起向左作匀速直线运动,在不撤除向右16N的水平推力的情况下,应该 万级的计数单位有万位,十万位,百万位,千万位 高中物理向心力什么时候是重力减弹力什么时候弹力减重力RT,我高一 ,计数单位之间的进率都是十. “十万”相邻的两个计数单位是“百万位”和“万位”这句话对吗 “弹力大小与物件受到的重力成正比”这句话对不?为什么? 两个计数单位之间的进率都是10 这句话对吗 万位,十万位,百万位,千万位都是计数单位吗? 挂在天花板上的电灯所受的重力跟和绳对灯的拉力是不是相互作用力?为什么? 初中物理课本摩擦力符号用Ff表示还是用f表示 相领两个计数单位之间的进率都是10对吗 与十万位相邻的两个计数单位分别是百万位和万位对吗
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn