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

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”的错误。
实时大数据分析:网络分析的一种新方法 最新消息:iPhone 6将采用更大、更清晰的1704x960分辨率屏幕 吴毅挺:OpenStack是开源IaaS平台大势所趋的集大成者 做好扁平化设计-交互篇 狙击Google Glass?三星将推基于Tizen系统的Gear Glass GamePlay:跨平台开源3D游戏引擎,黑莓的努力你不懂 “少即是多” 高通QRD大会精华汇总 天云盾:构筑在云端的Web安全防护 解析大数据时代的数据库集群技术 莫里航海图,最早的大数据实践 弥补空缺!HappyFox面向iOS开发者发布开源移动HelpDesk SDK Chitika北美网络流量报告:WP KO黑莓、iOS超Android 《近匠》秦时明月:知名IP光环下的生存之道 微软研究院正式发布编程学习游戏Code Hunt 走近讲师:Memblaze刘爱贵讲述云计算中的闪存应用 【云先锋】ClouDil云方案:PB级大数据解决方案 一周消息树:这是要“发”啊?Google Brain之父正式加盟百度 最受欢迎的游戏引擎集结号:小白篇 多盟总设计师邢开捷:四两设计拨千金 Cocos2d-x游戏《Monster Strike》终结《智龙迷城》霸榜神话 高通物联网技术解决方案:从汽车到智慧城市 Arduino携手Atmel 发布Arduino Zero开发板 以色列玫瑰:细数十位科技创新领域的女性佼佼者 8款最佳的开源在线学习CMS系统 在发布站点前,Web开发者需要关注哪些技术细节? TOCC、中航信、高德、北斗平台重磅专家登场 邀您共享ITS技术盛宴 腾讯大数据之TDW计算引擎解析——Shuffle AMD APU14 BEIJING技术创新大会精彩看点 这是云整合时代开始的节奏吗?Rackspace考虑退出 一周热点:如何使用15美元每月的机器实现百万文档检索 黑客获取数据信息的目的和进攻手段及应对之策 急!!!关于FileSystemObject问题,在线等 求面积 鼠标在视图和用非模式对话框交互绘图 在.login中怎么设置汉字的位数? oracle9i的安装文件都有什么?望高之!急! 如何用window.open弹出一个屏幕居中的窗口? 大侠们,在线求word200文件密码破解,急!!!!!!!!!!! ccnet(苦海放歌) tdl982324(石井坚) ( ) wanghr100(灰豆宝宝.net) possible_Y(◎)(◎)←(这是眼镜,不要想歪了)请接分 ccnet(苦海放歌)yaoxuefeng(锋雨者)brainf(后街)请接分 配置节的type的第二个参数的含义 报表问题。 最近在找个网站管理系统,各位能否给个建议 windows2000的奇怪问题 关于如何自定义组件问题 有关windows 98自动重起问题。 ListBox问题 VFP8.0中的数组问题,高手和用过的人来看看! 数据库的移植问题? 重新开机时常常变成"大图标",怎样设置使WIN2K所有磁盘(c,d,e盘)上的所有文件夹和文件以"列表"显示,就是让"查看"->"列表"固定? oracle9i的安装文件都有什么?望高之!急! 哪位有没有SCJP培训的录音或其他教学的好东西阿 MSComm控件在设计时运行没问题,但打包后装到别的机子老是出现“没有注册类”,求救? delphi 做的数据库应用程序如何移植?? copysign怎么用啊? 如何将一个网页的所有链接均自动加为绝对链接? 技术与数学的问题 本人写了一个设置纸张方向和大小的函数,其中MyDevMode.dmPaperSize = psize '若vbPRPSA3 设置纸大小为A3,但在VB对象库中找不A2张对应值 tomcat4.1.24中的sevlet问题 我下载了linux的iso文件,可怎么安装啊!! 我想问一下,有关于计数器的相关的信息? 救急:是否可以在两个页面(两个单独打开得ie浏览器页面)传递参数,如何实现啊? JDBC相关的两个问题 Oracle8.1.6怎样连接SQL SERVER2000 ?(在线等待) inserted表问题 急!!!关于FileSystemObject问题,在线等 dll 编译问题 请教 请教关于iterator与container? 谁有mixerAPI的中文资料,如(mixerGetLineInfo)我需要弄懂原理(不需要MSDN) 请问“怎么样才能修改以有的flash文件”,拜托,在线等待 如何使相同的子窗口显示一个? ?请教高手有关Align的问题。 高手帮我谢谢注释~~高分相赠~~~~谢谢高手~~~~ 各位大牛们,小弟想请教大家对FlowMIS这个平台有多少了解,用此平台进行二次开发(企业信息系统)好不好。 SQL SERVER2000 怎样连接Oracle8.1.6(在线等待) C语言程序设计 如何在英文字符集的客户端访问服务器为中文的数据库? 那4M是不是让诺基亚给偷了?! 如何调用ResetPrinter函数设置默认打印机 listview使用的问题 delphi的打包问题 请大家推荐一个短信网关 都说吃四条腿的(牛羊猪)不如吃两条腿的(鸡鸭),两条腿的不如一条腿的(菌菇类),一条腿的不如没有腿的(鱼),那虾算哪一类? 这些年来,人们的日子越来越红火,真是_________.(歇后语) 望梅止渴主要内容 初中数学概括,越详细越好. 谚语“是金子总会发光”相近的故事是( )A.灰姑娘b.白雪公主c.丑小鸭D.海的女儿 表示“扔”的词语?暗暗暗暗暗暗暗暗 霍乱毒素B亚单位的主要用途? 底座是三根柱子的建筑 抛的词语是什么 核仁在核糖体亚单位前体组装中的作用是什么? 水刀切割机可以切木材吗,能切多厚,精度多少,刀路多宽.水刀切割机价格 核糖体大小亚基为什么要分离 越难越好 我才申请的 把分都给你 桃花的雄蕊有什么特点急求、、、、、 原核细胞的核糖体两个亚基分别是多大? 《红楼梦》中人物有几个有含义的名字(谐音)比如甄士隐 就是 真事隐 贾雨村 就是假语村言的意思 其他的就不清楚了 1.求证:对于给定的等边三角形,三角形内任意一点到三边的距离和为定值2.在∠B的两边上分别取点A,C,过A作AD⊥BC于D,过C作CE⊥AB于E,若AB≥BC,CE≥AB,那么∠B等于多少度?3.直线AB,CD交与点O,OE平分 两小儿辩斗对你有啥启发?孔子不能决也 说明啥? 小时四条腿,中年两条腿,老年三条腿!打一动物 霍乱肠毒素的组成中,表达肠毒素的作用成分 是A亚单位还是A1呢? 欧姆定律的应用题,越详细越好..1、(2007•宁波)如图,电源电压保持不变,表①、②、③是电流表或电压表,滑动变阻器R2的滑片P在中点,闭合开关S,三只电表均有示数.当滑片P向左移动时, 推荐风格与Long Shot相似的歌曲Long Shot是Kelly唱的,风格明快,求这种风格的歌曲. 朱自清在写《春》时,多处用了比喻,如写桃花、杏花、梨花,说它们“红的像火,粉的像霞,白的像雪;写…朱自清在写《春》时,多处用了比喻,如写桃花、杏花、梨花,说它们“红的像火,粉的像 适用简易程序有哪些条件? 日环食的形成dvrfscyrv6v 根基造句 界门纲目科属种的门有哪些门脊索动物门之类的, 小学课本上只有日偏食,日全食,月偏食和月全食,唯独没有日偏食.请问,日环食是怎样形成的? 朱自清在写《春》时,多处用了比喻,写桃花,杏花,梨花时 the only way i could do this was. 这里省去的是什么单词the only way i could do this was.这里省去的是什么单词作什么语先行词被什么词在从句中代替填术语 日环食是是什么?怎样形成的?最好有图的, “火”还表示桃花——,“霞”还表示杏花——,“雪”还表示梨花——. 《独立宣言》,《人权宣言》,《权利法案》的启示. 日环食是什么原理? 桃花,杏花,梨花都开了,红的像火,粉的像霞,白的像雪.这句话吧()比作(),说明花儿() ONE SHOT什么意思 “辛亥革命”的英语翻译是什么 朱自清中的《春》为什么只写“桃花、杏花、梨花”,而不写“荷花或菊花”?如果你是老师,你怎样回答这个问题? 对丁克家族的看法?我是80年后的一代,父母辈的人的观念是:结婚就应该生孩子,这是种幸福.可是我不认为是这样.也许是价值观不同吧.我认为生孩子是项弊大于利的投资.想到生孩子,我就联想 辛亥革命用英语怎么说 青蛙为什么长两条腿?而蝌蚪都有四条腿.. 这两个小孩哪个说的有道理?意思是什么!简介一点!好的话+100分!别长篇大论! 荷兰为何被称为风车的故乡 初一时钟问题 对丁克家族应持有什么态度 send的英文似嘛意思啊,! 没有四条腿的椅子叫什么?就是没有四条腿,可以在东北炕上用的.可以后依的. 核糖体大小亚基在合成蛋白质前是分开的还是在一起的 《背影》描写父亲爬月台运用的是白描的写法? 椅子为什么四条腿? spare part怎么读 杏花、桃花、梨花开花时间 凳子为什么是四条腿? android 手机spare part 里面有挂载/系统有只读和读写到底有什么用—什么区别—选择的话选择哪个呢? 描写桃花,杏花和梨花的句子描写桃花,杏花和梨花的句子,不要诗句,要段落 江苏省有没有动物卫生监督服装海南、上海都有 12month and 1% spare 这实在出口产品保修期的一种说法,我只是不明白的1%spare 我的理想 作文 写关于素描的 县级动物卫生监督检查站一个月能开多少钱 Spare part of flue gas 黑白简约揭幕多伦多2014春季时装周美国白宫:政治僵局令就业人数少增12中国研究人员最终获准参加美天文会议沙特拒绝联合国安理会席位 声称其执行快讯:杭州德胜一出租房3人相约自杀 首届丝绸之路商旅文化博览会在古城西安尼日利亚军方打死37名武装分子美刊分析中国出境游客因何更爱自助游日政府将制作领土问题宣传片以谋求国际英报报道 高官联袂访华终结中英冰冻期就业数据黯淡或拖延美联储“退出”脚步港报称印中民间互视有温差美国科学家发现DNA时钟 或可重设时美国企业研发氦气球游大气层 每人旅费美报文章 中国良性通胀对世界是好事中美军方高官加快对话步伐美国企业研发氦气球游大气层 每人旅费筱原凉子永作博美 谁是日本最美熟女?美国科学家发现DNA时钟 或可重设时墨报文章 “石油人民币”时代即将到来美国脱口秀节目涉种族歧视 亚裔社团吁上海未来3天天气宜人 空气质量优良开课日出行,请当心这17大“堵点”叙反对派全国联盟领袖吁阿盟支持美军事日本大饭核电站两机组将定期检查 日将张亚东:孙杨师徒之间交流多了 全运夺美网-小威2-0斯蒂文斯 晋级八强长沙一婚车闯红灯拖协警30米 自称忘男女车流中玩惊险,背靠背秀“车技”湖南14市州明日天气中秋小长假火车票单位发中秋福利了,活鸡一只兰州军区实弹演练 火箭炮群掩护装甲部英国电视名人弗罗斯特演讲时突发心脏病中石油涉腐多发带:油田外包、工程贸易本周日成都名中医现场展示独门绝技“穴国民党拼台南市长选举 口袋名单有龙应权健四川涉非法集资案 获直销牌照前连兰州军区实弹演练 火箭炮群掩护装甲部张灵甫哪次胜利被谭震林怒称为华野的耻郁慕明网上示范“开合跳” 动作精准爆跆拳道选手现场求婚成功
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘