swift2.1新特性(转载)

本文详细介绍了Swift 2.1版本中的新特性,包括互操作性、数据类型增强、令人欣喜的字符串操作改进、协变性和逆变性特性、以及修复的常见问题。同时分享了个人在使用过程中的体验和建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你觉得苹果的Swift语言没有赶上趟,那就要重新审视这一观点了!Xcode 7.1 Beta 2版本已经支持Swift 2.1了。我没有必要在此事无巨细一一列举,你随时可以自行查看其发布说明的。

互操作性和数据类型

  • 从C语言中引入的枚举类型自动遵循Equatable协议。所以用于样式匹配的开关语句(switch)目前不再强制去写扩展(extension)声明和操作符(operator)。
  • C语言中的非匿名联合体(union)被作为结构体(struct)引入。结构体中的每一个字段与联合体中的字段相对应。Swift中的结构体大概是用来维持一种能力的,即使用联合体给底层同一数据位(bit)投影不同的字节或字。但我还没验证过Swift结构体的域(field)是否会用同一个位进行存储。
  • C语言结构体中,相对鲜为人知的位域(bitfield)也被引入了Swift,能够使用了。
  • dispatch_block_t变回了@convention(block) () -> Void的样子,因此 dispatch_block_create又能正常工作了。

令人欣喜的特性

  • 字符串可以按照字符串为单位进行插入操作。这是一直困扰我的地方。如今可以这样做了:"fancy \(thing ?? “”)"。
  • 如果只是文件中的私有内容被修改,则不会诱发与之依赖的其他文件重新编译。有些时候,这样做性能会得到大幅地提升。
  • 类型检查产生了“继续改进”模样的错误消息。我不会太多关注这一点,除非明显遇到了很常见的场景,那就是一个普通的闭包本身带有错误。这基本上是说你出错了,要么是超出了范围,要么是声明了没有用的内容;我已经习惯了剪切和粘贴,从而避免了这样的问题。我也会手动给闭包传递参数和返回类型。这部分是不错的!

协变性和逆变性

函数和闭包目前都具有 协变性(covariance)和逆变性(contravariance)

这一奇特的性质表示可以通过Any -> Int这样的转换,得到String -> Any这样的结果。

换句话说,当返回类型的派生程度较目标类型大时,闭包的参数派生程度就较目标类型的小。想一想这是合理的……如果函数可以接受(Any, Any)类型的参数,那么它一定能够接受(String, Int)和(AnyObject, NSURLRe-quest)类型的参数。如果目标类型是AnyObject,那么UIButton肯定也没问题。

修复的问题

  • 当Objective-C中的块(block)传递给Swift中的方法时,会引起内存泄漏或崩溃,这个问题被修复了。
  • 在switch语句中使用as Type处理多种类型的转换不再引起内存泄漏。
  • 使用var或let一次声明多个全局变量不会再引起内存出错。
  • while let和while case语句不再使变量作用于其下的语句块。这样一来,可能会导致编译器崩溃,因此我担心对每个人来说这都是一种破坏。

已知的问题

  • 不带优化设置编译的情况下同时开启调试信息,这样做会导致编译器崩溃。解决方法是在非调试模式构建过程中,使用-gnone禁掉调试信息。

个人说明

紧张的日程外加生病,处理事情忙得不可开交。但我期待着恢复定期写博客的状态。熬了一段时间后,有几篇文章马上要完成了。一些是关于Swift的文章,另外一些是更泛泛的内容。

(翻译/白云鹏 友情审校/张挥戈)

文章来源:Swift 2.1

作者简介:Russ Bishop,全能型程序员,使用C#、Objective-C和Swift语言编程,开发了奇特的应用Storm Sim Free。

译者简介:白云鹏,移动应用开发者,个人博客:http://baiyunpeng.com

资源下载链接为: https://pan.quark.cn/s/9648a1f24758 这个HTML文件是一个专门设计的网页,适合在告白或纪念日这样的特殊时刻送给女朋友,给她带来惊喜。它通过HTML技术,将普通文字转化为富有情感和创意的表达方式,让数字媒体也能传递深情。HTML(HyperText Markup Language)是构建网页的基础语言,通过标签描述网页结构和内容,让浏览器正确展示页面。在这个特效网页中,开发者可能使用了HTML5的新特性,比如音频、视频、Canvas画布或WebGL图形,来提升视觉效果和交互体验。 原本这个文件可能是基于ASP.NET技术构建的,其扩展名是“.aspx”。ASP.NET是微软开发的一个服务器端Web应用程序框架,支持多种编程语言(如C#或VB.NET)来编写动态网页。但为了在本地直接运行,不依赖服务器,开发者将其转换为纯静态的HTML格式,只需浏览器即可打开查看。 在使用这个HTML特效页时,建议使用Internet Explorer(IE)浏览器,因为一些老的或特定的网页特效可能只在IE上表现正常,尤其是那些依赖ActiveX控件或IE特有功能的页面。不过,由于IE逐渐被淘汰,现代网页可能不再对其进行优化,因此在其他现代浏览器上运行可能会出现问题。 压缩包内的文件“yangyisen0713-7561403-biaobai(html版本)_1598430618”是经过压缩的HTML文件,可能包含图片、CSS样式表和JavaScript脚本等资源。用户需要先解压,然后在浏览器中打开HTML文件,就能看到预设的告白或纪念日特效。 这个项目展示了HTML作为动态和互动内容载体的强大能力,也提醒我们,尽管技术在进步,但有时复古的方式(如使用IE浏览器)仍能唤起怀旧之情。在准备类似的个性化礼物时,掌握基本的HTML和网页制作技巧非常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值