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

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”的错误。
领先Google、Amazon、Dropbox,Apple云存储用户最多 传IBM重新设计晶体管 预计五至七年内成熟 快讯:云计算大会6月召开 云计算概念企业股票飙升 集成开发环境:Qt Creator 2.7.0发布 移动周报:“今日头条”CEO,爱冒险的技术宅 从China Daily的iPad版,看中国纸媒如何摆脱“旧情结” 天睿推出大数据探索平台:“开箱即用”的数据分析 Basho开源Riak CS,与AWS S3兼容的云存储架构 MongoDB Days北京杂记 VMware携手亿阳信通 铺垫混合服务 行业应用,移动优先:移动难七大痛点剖析 HTML5开发必备:游戏开发资源合集 老而弥坚:65岁传奇Android工程师谈开发 2013中国云计算有奖大调查,每周大奖等你拿! Google Reader之死另一个不为人知的原因 小团队谈推广:豆果、金山、微博易、面包旅行 敏捷实战:如何让团队迭代交付周期缩短一半 移动设备管理初创公司AirWatch:首轮融资2亿美元 New Relic:不等应用崩溃,实时监控你的App! Zynga力挽狂澜三步棋:移动+授权+自有网络 巧用MapReduce+HDFS,海量数据去重的五大策略 革自己的命?为带来一致体验 IE11伪装FireFox 最古老的Linux发行版Slackware以及Arch Linux齐弃MySQL JEECG v2.3 发布,基于代码生成器的智能开发框架 Mozilla将设应用工场 Firefox OS瞄准欧洲南美 Summly创始人:12岁开始编程 17岁公司卖了3000万美元 因SaaS与NoSQL,Oracle雄风不在? 那些年云计算领域的大牛们 回顾:那些被平台方封杀的第三方应用 [热帖推荐] 中国的程序员,真的“短命”吗? 聚焦HTML5移动开发 第六届英特尔杯大学生软件开发大赛开幕 TCHAR[32]和CString, char *之间应该如何转化? 怎样在程序里显示jpg,gif图片? 关于按钮、工具条等问题,请进来看看 有两个CTime变量,t1,t2,我想把t1的日期部分和t2的时间部分合并成一个CTime变量t3,怎么实现? 有谁知道珠海的做J2EE薪水有多少(平均水平),谢谢大家! 我编写的CORBA为何总是提示"File not found 'OrbPas.dcu'" 准备今天打辞职报告! 请教高人!!!!!!!!!!!!!!!!!!!!!!!!!!!! LINUX支持多處理器 ActiveReports P2 套打票据打几页后出现套不准,请教? 关于delphi中Label控件的字体问题?? 请问哪里有ASP+ACCESS 的查询源程序下载? 小弟需要一份详细的数据库设计说明,不知有没有人可以帮忙? 請問銀行系統一般用什麼數據庫! 请大家推荐一个方便好用的网格控件,可以编辑、保存单元格的内容,bug又少的 急死我了,这行SQL语句错在那里呢? ORACLE8I安装问题,急。。。。。。 还是这两本书110分 急救:主板CMOS故障!! 有谁知道在JBuilder中插入一副图片应该用哪个Compoent 加急问题??关于.properties!!在线等, Win2K下控制台程序处于选定状态,如何恢复? 窗口自动关闭 救命啊!严重问题!怎么老是显示E2316:TempSongList::PlayFirstSong()is not a member of 'TempSongList'? 关一个小笨蛋生存的困惑,还请各位GG、JJ一定要帮帮忙呀~~~~ Interface中添加方法的问题,请高手指教!再线讨论!! c#访问FOXPOR数据库问题 WORD求源代码加分之四 怎么样获得一个 EDIT 的 句柄 ?? 请问嵌入网页中的Activex如何调整自身的大小?请各位高手帮忙!谢谢! Oracle和SQLSERVER中5用户10用户到底是什么意思? 我身边的一个PLMM说,她想找一个成熟、幽默、聪明的程序员。 一个局域网内访问odbc数据源的问题 对女孩子不能太热情了! 一个easy 的question 请精通C#与VB.net的大虾帮忙翻译一下 在异地拷贝一个文件(200M以上)到本地,如何做 《C++程序语言》(特别版)怎么样 getContentPane()是什么意思? 高手请进!嵌入网页中的Activex如何获取加载它的浏览器对象?谢谢! i am 24 year old ,but i have nothing 请问哪里有exchange2000 server??? XP,IE 6 SP1,安装JRE 1.4无数次,<APPLET>标签下的东西仍不能看,<OBJECT>可以,为什么??!!求救!! Socket发送接收的问题! c++ builder6的盘 mapx 问题? partition magic 8.0 一个既包含静态图象又包含视频播放的视频,怎样把它抓屏下来??? SOS!!!一个有关全文检索,以及文档的数据库存储的问题,急急!各位大侠出招啊,在线等候 请问如何在程序中将CEdit控件设为只读或取消只读, Java认证问题 有一杯接近饱和的氯化钠溶液,欲使其变成饱和溶液,下列方法不合理的是A添加少许氯化钠固体B恒温蒸发部分水C适当降低温度D加一杯更浓的氯化钠溶液 构建基因组文库法特别适用于原核生物基因的分离 这句话对吗? 在真核生物中,DNA和RNA都是遗传生物,其中DNA是主要遗传物质.这句话为什么错 Na2CO3.nH2O这么读?还有钠暴露在空气中发生哪些反应?最终产物是什么呢?急! 应用了胶体的什么特性1、肥皂的盐析2、土壤中的粘土有利于保持某些肥分3、陶瓷工业净化粘土(除Fe203)4、静电除尘5、微波手术刀可止血6、FeCl3溶液也可止血7、明矾净水8、血液透析(血 氢氧化钠久置在空气中会有什么现象 苯甲酸钠是什么? 甘氨酸是什么? 氯化银放到氰酸钠溶液里面为什么就溶解了氯化银不溶,氰酸银可溶...然后呢? (一道化学难题求急)为什么用碳酸氢钠沉淀镧系离子,杂质就是比碳酸氢氨和草酸多?料液:LACL3 沉淀剂:小苏打往100ml浓度为0.3mol/l料液中缓慢加入160ml浓度为5g/100ml的小苏打溶液沉淀生成碳 汽油跟什么混在一起的情况下不燃烧 下列事实与胶体性质无关的是(单选)在豆浆里加入盐卤做豆腐在江河入海口处易形成沙洲一束光线照射蛋白质溶液时,从侧面看到一束光亮的通路FeCl3溶液中滴入氢氧化钠溶液出现红褐色沉淀 “脱水缩核、必须氨基酸、多肽”名词解释? 西红柿推测它们传播种子的方式并说明理由 蒲公英推测它们传播种子的方式并说明理由 急)下列各组物质中,都是强电解质的是下列各组物质中,都是强电解质的是 ()A.HNO3、HCl、BaSO4B.NH4Cl、CH3COOH、Na2SC.NaOH、Ca(OH)2、NH3·H2OD.HClO、NaF、Ba(OH)2希望有人帮忙,理由 越详细越好.以后遇到 25个氨基酸缩合成多肽链所产生的水全部用于光合作用生成多少分子的氧气 汽油机用完汽油后又加了汽油为什么打不燃了? 溶液中氯化铝对氯化银的溶解有什么影响、氯化铝是共价化合物 水是强电解质还是弱电解质?一楼..何解呢?二楼.电解质的定义是”在水溶液里或熔融状态下能够导电的化合物”..是啊!纯水不能导电.那它就不是电解质了吗? 举例说明胶体的应用. 下列事实与胶体性质无关的是()?A 在豆浆里加入盐卤做豆腐 B 河流入海处易形成沙洲C 一支钢笔使用两种不同牌子的墨水,易出现堵塞D 往氯化铁溶液中滴入氢氧化钠溶液出现红褐色沉淀 为 冷库地面结冰有什么危害嘛?我们单位的冷库地面结冰了 害怕有什么危害? 铁碳合金相图中杠杆定律的应用 胶体有什么?举例20个用途也算一个 冷库怎么改盐水结冰我有一冷库,压缩机是5个千瓦的,想改成盐水制冰,能不能改,怎么改?有没有那位高人能给我技术参数.我的问题是我现在又一冷库大概30立方,压缩机是5个千瓦的,我现在想 请问二氧化碳与水生成弱电解质那它如何与氢氧化钠强电解质反应呢 怎样开车汽油才能充分燃烧? 为什么HcO3-与物质发生离子反应时不拆,而HsO4-反应时折 水是电解质,而且是弱电解质,那为啥蒸馏水不是电解质?难道是有杂质的水是电解质?但电解质都是化合物嘛 高速公路上的这种路面标线是什么意思? NaOH怎么变成Na2CO3?要方程式, 浓硫酸和脓硝酸混合,氧化银触点时.产生的二氧化氮气体应该怎么降解,或者分解.气体可以使用向上排空气法通入碳酸钠溶液里吗?会有什么反映. 为什么汽油不能充分燃烧? 乙醚对人有什么作用 “将浓硝酸分解产生的混合气体干燥,然后插入插入带火星的木条,木条复燃,说明二氧化氮能支持燃烧.为什么? 盼望用英文怎么写? NA如何变成NAOH?要方程式 硝酸和什么离子反应会生成气体呢. 锌和铝 离子半径大小比较 乙酰丙酸乙酯在醇钠下怎么反应 多少克二氧化碳中含有6.4克氧 求一种是牙膏状,但是能像汽油一样燃烧的材料.就是能像汽油一样,用火点一个小地方,就能把其他地方一起引燃. 具体的颜色,遇水的现象,和常见的反应 与核糖体形成有关的结构 设想把一块铜分成两小块,再把每小块一分为二,一直这样分下去,分到什么时候仍能保持铜的的性质呢? 那个出来得效果香还有隐!“邻氨基苯甲酸苯乙酯”“甲算苯乙酯”“丙酸苯乙酯”“ 1.6克某物质跟氧气在密闭的容器里完全燃烧产生4.4克二氧化碳和3.6克水则该物质中一定含有 烧碱露置在空气中发生的变化 用蒸馏水鉴别Ba(SO4)2.KCL.NaOH.CuSO4.Na2SO4知道摆脱说下 胶体界面化学在生活中的应用 氢氧化钠溶液长期露置在空气中会怎样 硫化钠的饱和溶液和氯化钙的饱和溶液的反应能生成什么物质 氢氧化镁和硝酸银反应的现象 帮忙用英语翻译一下这句话:“我们应该坚定这个信念并把其上升为自己的理想,坚信这个理想终究会实现.” 甘氨酸有什么化学性质? 下列物质水醋酸盐酸烧碱其中属于弱电解质的是水,氨水,盐酸,液氨,醋酸,氯化银,乙醇,醋酸铵,氯气 搜集缩写,请把您知道的缩写告诉我,例如RP代表人品......任何方面的都行! 仿写:如果我们的生命是一缕阳光,就为大地洒下一点温暖; 如果地球不绕着太阳转 这个现象叫什么?就是这个 请回答我谢谢或者 你还可以帮我具几个这样类型的冽子如:河水从来不会逆流 实验室用二氧化锰和浓盐酸反应制取氧气,今欲制氯气44.8L(标准状况下)需要二氧 田径名将史冬鹏河北保定大婚 体育局领田径名将史冬鹏今日大婚 新娘是其师妹43名中国人涉非法采金被加纳抓扣 2PMI升至18月最高 中国经济第三季同济大学与联合国机构合推绿色经济教材全国最大网络传销案终审:维持原判主犯德国政府决定婴儿出生证可填写“未确定洛杉矶机场枪击案嫌犯身份确定 被指曾洛杉矶机场枪击案疑犯写有反政府字条 德国老人中奖1300万欧元 自称通过王力宏王菲樱井翔 揭大牌明星的惊人背土耳其4名女议员戴头巾出席会议 打破日媒:中国调查船驶入钓鱼岛附近“专属休斯敦华侨华人游行抗议美国广播公司歧纽约将购烟年龄限制上调至21岁 禁止洛杉矶机场枪击案嫌犯身份确定 被指曾巴武装人员挖地道埋炸药炸伤以军 巴以伊朗推出第一艘观光潜艇 完全由伊朗专获俄罗斯一大型私营网站聘用 斯诺登开获俄罗斯一大型私营网站聘用 斯诺登开德国政府决定婴儿出生证可填写“未确定第五话-纽约Ⅳ蛋花汤面告诉大家,人生旅程中三样永远不能放弃01 天使与恶魔【柏翠幸福烘焙】黑芝麻淡奶油磅蛋糕她27岁老公外遇,28岁离婚,29岁乔布斯如何让iPhone便于聋人使用华语明星2015年Met Ball红Nokia品牌走了,但它还会回来02两位情况相似的留学生,一个留在美国,京东展开全面进攻,供应商及消费者渔翁03京东展开全面进攻,供应商及消费者渔翁好男儿四海为家,我懂了,你们懂了吗?中国男人为什么热爱手串男子车祸现场意外救女成永别:女儿因伤04【连载】《楼市与爱情》:第五章 万米05【柏翠幸福烘焙】心形椰蓉面包
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘