AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第6章表格与表单

Geek_8dbdc1

LeetCode题解:88. 合并两个有序数组,双指针+从前往后+使用新数组Copy,JavaScript,详细注释

Lee Chen

大前端

mini-vue之proxy代理

晓枫

vue.js

翻译: Effective Go (4)

申屠鹏会

翻译 Go 语言

linux终端的快捷命令汇总

良知犹存

Linux

第十周命题作业

菲尼克斯

为什么需要企业架构师?

周金根

第十周学习总结

刘卓

[高冷面试]好不容易走到HR,结果被HR盘了,14题带走

我是程序员小贱

易观方舟70秒可视化埋点SDK全部开源!

易观大数据

埋点

HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第7章定位

Geek_8dbdc1

计算机网络基础(十八)---传输层-TCP的流量控制

书旅

TCP 计算机网络 协议栈 网络层 流量控制

全民加速节:全站加速在游戏行业的最佳实践

阿里云Edge Plus

CDN 动态加速

第十周学习总结

菲尼克斯

HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第8章FlexBox布局

Geek_8dbdc1

如何让“哑”终端进化,你知道吗?

华为云开发者联盟

操作系统 物联网 IoT 华为云 LiteOS

FastDFS不同步怎么破

心平气和

Binlog 同步 fastdfs

第10周作业

小胖子

悄咪咪提高团队幸福感 & Surprise!

Kerwin

Java 开源

OpenTSDB 数据存储详解

vivo互联网技术

数据库 时序数据库

计算机网络怎么学?学会这几个工具有助你理解网络协议!

我是程序员小贱

centos中Anaconda的安装以及keras安装

我是程序员小贱

192.168.52.165/25是啥意思?

书旅

IP 网络 CIDR

哈希算法的设计要点、应用场景

多选参数

哈希 hash 哈希算法

拼多多员工曝离职黑幕:要走可以,要离职证明,没有!

程序员生活志

职场 互联网公司

第十周作业

刘卓

B 站收藏 10W+,GitHub 标星 6K+,肝了这门计算机速成课!

JackTian

GitHub 编程 程序员 B站 计算机基础

React TypeScript项目基本构建

JackWangGeek

前端科普系列(1):前端简史

vivo互联网技术

html 大前端 Web

SpringBoot 实战:一招实现结果的优雅响应

看山

springboot 实战

一网打尽 Java 并发模型

苹果看辽宁体育

Java 后端 并发

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