写点什么

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

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

关注

评论

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

游戏行业(北区)客户沙龙丨阿里云用户组北京站

云布道师

阿里云

【JavaScript】JavaScript(js)简单介绍

No8g攻城狮

JavaScript JavaScript4

【异常】Cause: java.sql.SQLException: Invalid value for getInt()

No8g攻城狮

sql Java、 javaWeb

React源码分析1-jsx转换及React.createElement

flyzz177

React

PING命令解析

穿过生命散发芬芳

ping 1月月更

干货!C4D的7个实用插件分享

Finovy Cloud

云渲染 C4D

模块三

GeekMLS

#架构训练营

论坛预告 | 1月9日举办2023 ICT深度观察政企数字化转型分论坛

信通院IOMM数字化转型团队

数字化转型 IOMM ICT深度观察

沙龙预告 | 1月11日举办数字化业务安全生产沙龙第2期

信通院IOMM数字化转型团队

数字化转型 IOMM 数字化业务安全生产

要做好用户体验,一定要知道这些心理学效应!

产品海豚湾

心理学 产品经理 产品设计 用户体验 交互设计

2022年中国特色智能工厂领航制造业升级分析报告

易观分析

数字经济 智能工厂

百度百舸·AI 异构计算平台,加速自动驾驶模型迭代

Baidu AICLOUD

自动驾驶 模型训练 异构计算

TextView(文本框)详解

芯动大师

android UI TextView

架构实战营 - 模块 3- 作业

zealot0317

我们为什么一定要持有一枚 Smart Royal NFT?

股市老人

外包学生管理系统架构文档

Geek_e5f2e5

一种简洁又不失优雅的工作流:极狐 flow

极狐GitLab

DevOps flow workflow 极狐GitLab 分支管理

Triple 协议支持 Java 异常回传的设计与实现

阿里巴巴云原生

阿里云 云原生 dubbo

React源码分析(二)渲染机制

flyzz177

React

Hands on HTML & CSS

无人之路

CSS html

基于 Log 的通用增量 Checkpoint

Apache Flink

大数据 flink 实时计算

阿里云网络解决方案架构师任江波:全球一张网,支撑游戏业务高效互联

云布道师

阿里云

React源码分析(三):useState,useReducer

flyzz177

React

私有部署V3.8:自建内部应用库和预置应用

明道云

我们为什么一定要持有一枚 Smart Royal NFT?

鳄鱼视界

模块3作业-学生管理系统的架构设计文档

陈实

「架构实战营」

SQL Studio:一款纯Web化SQL开发工具,关键是免安装还免费!

雨果

sql 数据库管理工具 SQL开发

【深入浅出Sentinel原理及实战】「框架整合专题」Sentinel服务框架对接Dubbo服务框架整合开发指南(4)

码界西柚

dubbo sentinel 1月日更 sentinel dashboard

2023-01-05:konradkleine/docker-registry-frontend是registry的web界面工具之一。请问部署在k3s中,yaml如何写?

福大大架构师每日一题

云原生 k8s 福大大

fastposter v2.11.0 天花板级的海报生成器

物有本末

海报 海报生成器 海报编辑器 海报生成 海报小程序

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