QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:003374
用户头像

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

关注

评论

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

Gartner®DevOps 平台魔力象限出炉,GitLab 获评「领导者」!

极狐GitLab

gitlab 安全 开放平台 开源贡献者 领导者象限

如何用极狐GitLab 为 iOS App 创建自动化CI/CD?详细教程来了

极狐GitLab

ios DevOps gitlab 自动化 CI/CD

券商数字化创新场景数据中台实践

袋鼠云数栈

数字化转型 数据治理

6月优质更文活动结果已出炉,快来看看有没有你

InfoQ写作社区官方

热门活动 6 月 优质更文活动

看这个视频,4万人学会云上部署 Stable Diffusion

Serverless Devs

云计算 Serverless 函数计算FC

“Cisco Live 2023 大会”云原生观测解决方案成关键看点

乘云数字DataBuff

云原生 APM 可观测性 Cisco 智能运维AIOps

HTML5 游戏开发实战 | 俄罗斯方块

TiAmo

html html5 6 月 优质更文活动

Docker容器共享磁盘

高端章鱼哥

Docker Linux

AI 和 DevOps:实现高效软件交付的完美组合

SEAL安全

AI DevOps 企业号 6 月 PK 榜

如何基于G6进行双树流转绘制?

EquatorCoco

G6 CRM系统 双树流

基于群组实现从 Azure AD 到极狐GitLab 的单点登录

极狐GitLab

统一身份认证 IdP 单点登录 用户同步 配置群组同步

实现淘宝母婴订单实时查询和可视化|Flink-Learning实战营

Apache Flink

大数据 flink

我为什么选择多边形架构做为工程的基础思想

大东(AIP内容运营专员)

通过构建背景图学习CSS径向渐变

南城FE

CSS 前端开发 渐变

2023中国(抚远)冷水鱼预制菜高质量发展大会在黑龙江抚远举办

新消费日报

代码随想录训练营 Day02 - 数组(下)

jjn0703

算法

你说搞开发的很累,那做什么工作不累?

树上有只程序猿

我在中小型项目SuperCell模式实战经验

大东(AIP内容运营专员)

List的拆分的几种方式

EquatorCoco

前端 前端框架 开发框架

如何使用 Flink SQL 探索 GitHub 数据集|Flink-Learning 实战营

Apache Flink

大数据 flink 实时计算

Flink CDC 2.4 正式发布,新增 Vitess 数据源,PostgreSQL 和 SQL Server CDC 连接器支持增量快照,升级 Debezium 版本

Apache Flink

flink

LED租赁屏市场

Dylan

活动 广告 方案 设备 LED显示屏

采用Qt+Live555搭建RTSP服务器

DS小龙哥

6 月 优质更文活动

鲲鹏入晋,乘云而起,华为开发者大会开启“山西时刻”,共话山西鲲鹏生态建设

彭飞

火山引擎A/B测试推出智能流量调优实验,助力汽车行业破局营销困境

字节跳动数据平台

IPQ9574 motherboard and QCN9274 network card are perfectly combined to achieve triple-band rate 2.4G/5G/6E

wifi6-yiyi

wifi6 WiFi7

es 笔记二之基础查询

Hunter熊

elasticsearch

为什么负数的补码等于反码加一

xzy

科兴未来|浙江丽水市第六届高层次人才创业大赛活动

科兴未来News

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