NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Swift 3 来了!

  • 2016-09-25
  • 本文字数:835 字

    阅读完需:约 3 分钟

Apple 工程师 Ted Kremenek 在博文中写道,Swift 3.0 已发布。这次发布的新版本中对于语言及其标准库进行了大量的修改,增加了Linux 端口,并首次官方发布了 Swift Package Manager

自 2015 年底 Apple开源 Swift 之后,Swift 3 是首个发布的主要版本,该版本实现了 Swift 演变过程中所讨论并通过的 90 多个提议。

Swift 3.0 中的一系列变化旨在依照 Swift API Design 指南,通过去除一部分可能被视作遗留下来的 Objective-C 的内容,来清理 API。这个举措可以有效缩短 Swift 的语法,并增强一致性:

需要命名函数和方法的第一个参数以实现写操作(除非用 _ 显式省略):

复制代码
aString.write(toFile: "filename", atomically: true, encoding: NSUTF8StringEncoding)
UIFont.preferredFont(forTextStyle: UIFontTextStyleSubheadline)

而不是:

复制代码
aString.writeToFile("filename", atomically: true, encoding: NSUTF8StringEncoding)
UIFont.preferredFontForTextStyle(UIFontTextStyleSubheadline)

省略不必要的词:

复制代码
UIColor.red()

而不是:

复制代码
UIColor.redColor()

当上述的两条规则同时采纳的时候会产生更好的效果,例如下面的语句所示:

复制代码
aString.stringByReplacingOccurrencesOfString("A", withString: "a")

变成:

复制代码
aString.replacingOccurrences(of: "A", with: "a")

Swift 3 改进的另外一个版块是处理属于多个 Cocoa 框架的 C 功能。比如说所有以 CGContext、CGAffineTansform、CGPDFDocument 等开始的 Core Graphics 功能,现在可以被称为是对象的方法:

复制代码
if let ctx = UIGraphicsGetCurrentContext() {
ctx.setFillColor(UIColor.red().cgColor)
...
}
CGAffineTransform(translationX: 64, y: 0)

Swift 3 中还对语法进行了改变,以清理语言。比如说,去除了 ++ 和 -- 运算符,去除了函数的参数中的var ,去除了 C 语言中的循环条件和增量器,这些语法带来的弊大于利。

Swift 3 的变化列表涵盖了太多内容,很抱歉我们无法在一篇文章中涵盖所有的内容。你可以在官方的公告中查看所有的更新细节。

查看英文原文 Swift 3 is Out

2016-09-25 19:003213
用户头像

发布了 218 篇内容, 共 64.9 次阅读, 收获喜欢 75 次。

关注

评论

发布
暂无评论
发现更多内容

Java-技术专题-挖掘陷阱系列(1-10)

洛神灬殇

Java

集成融云 IMLib 时,如何实现一套类似于 IMKit 的用户信息管理机制

融云 RongCloud

使用融云 IM 点击最近聊天记录时跳转到 @ 自己的消息

融云 RongCloud

大作业

eva

文档 用例

MMMDeFi智能合约(MDF互助)系统开发方案

薇電13242772558

智能合约 数字货币

为融云聊天页面的输入框添加 Placeholder

融云 RongCloud

唠一唠融云的消息补偿机制

融云 RongCloud

LeetCode题解:221. 最大正方形,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

融云 IM SDK 如何插入消息

融云 RongCloud

应对“角色爆炸”,PBAC 真香!

龙归科技

权限控制 管理系统 权限管理

桶排序,计数排序,基数排序

一个大红包

3月日更

给融云的输入框上方加个功能按钮,怎么整?

融云 RongCloud

几张图解释明白 Istio!

xcbeyond

Service Mesh istio 3月日更

融云会话页面刷新不及时问题

融云 RongCloud

融云的聊天页面在 iOS14 出现崩溃的解决办法

融云 RongCloud

如何设置融云用户信息

融云 RongCloud

飞桨框架2.0正式版重磅发布,一次端到端的“基础设施”革新

百度大脑

AI 分布式 框架 #百度#

自定义融云会话列表 cell 选中背景

融云 RongCloud

干货分享——使用融云通讯能力库 IMLib 实现单群聊的阅读回执

融云 RongCloud

关于融云 SDK 在使用 p8 证书的坎坷~

融云 RongCloud

使用融云 SDK 避坑指南之 iOS13 推送失败

融云 RongCloud

融云 IMKit 音频录制参数

融云 RongCloud

融云自定义消息不显示

融云 RongCloud

还在计划转Go么,聊聊程序员的成长

架构精进之路

3月日更 Go 语言

融云 SDK 如何实现群组操作

融云 RongCloud

作为小白接融云 IM SDK 新路体验~

融云 RongCloud

Hystrix技术专题-基础配置说明

洛神灬殇

Hystrix

30 分钟集成融云 IM 即时通讯

融云 RongCloud

融云聊天页面长按消息后“翻译”功能的实现方法

融云 RongCloud

如何隐藏融云输入框语音按钮

融云 RongCloud

如何利用融云 IMLib 来实现一个阅后即焚功能

融云 RongCloud

Swift 3来了!_开源_Sergio De Simone_InfoQ精选文章