Swift 周报 #75

作者:Jesse Squires,原文链接,原文日期:2017-06-22
译者:四娘;校对:Cwift;定稿:shanks

本期作者: Greg Heo

我不知道你怎么样,但我还沉浸在 WWDC 的余兴里没恢复过来。

回到实际生活中,苹果发布了 iOS 和 Xcode 的第二个 beta 版。查看开发者网站,Xcode 9 Beta 2 的更新说明特别提到了 Swift 4 的更新和修复。

赞助

Advanced Swift Workshops

磨炼你的 Swift 技能,在 workshop 里学习一些更深入的主题。诸如 Mike Ash 这样世界知名的开发者,Swift 的专家齐聚一堂,他们将会带领你探索协议,泛型,反射和 C 语言的桥接。7 月 13 日华盛顿场,以及 7 月 24 日纽约场。

eventbrite.com

社区任务

写测试是一种探索标准库和语言特性的好方式,也能避免给项目留坑。

  • SR-4824:编译期添加集合类型约束的检查
  • SR-5040:将 “Exclude” 相关的功能性检查改为单元测试

可以通过 pull request 或者 tweet 提交任务。

Swift Unwrapped

第 16 集:Swift 的错误处理 — 发展历史 里,主持人提到了 rethrows 和 “类型” 很多次,缅怀 Objective-C,畅谈 Swift 错误处理机制的发展史。

资讯及社区

Swift 团队的巨星 Joe Groff 要暂时离开 Twitter,Joe 在 Twitter 上一直对社区积极响应,我们希望他早日回归。

聊到 Joe,他的前任 Chris Lattner (你们应该都认识)要重新找工作,虽然他说自己有 七年 Swift 开发经验,但我估计大部分公司还是想找一个有十年经验的 ¯\_(ツ)_/¯

Xcode 9 和 Swift 4 现在还在测试阶段,现在是一个回顾所有提案的好机会,看一看 Eric Cerney 总结出来的 What’s New in Swift 4?

Ankit Aggarwal 在 Swift 的博客里写了一篇 重新设计 Swift Package Manager 的 API,讲述新的 API 设计。Swift 的 package 描述是使用 Swift 写的,新的 API / 格式现在已经更新到了最新的语言设计规范。

提交和合并的请求

Philippe Hausler 提了一些关于 SE-0170: NSNumber 与数字类型的桥接反馈,主要是与 Float 和 Double 有关。如果你之前被浮点数的精度问题困扰过的话,可以查看“减少Double 和 Float 桥接的约束条件”的 commit.

Swift 迁移工具已经 merge 到仓库里了!迁移工具的核心就是把一个文件作为输入,然后输出一份文件,包含了所有修改建议,具体细节请查看 Swift migrator library 文件夹。

Swift 4 里大家最喜欢的 Encodable 协议,添加了对于 non-strong(weak,unowned,unmanaged)属性的支持

Swift 问题追踪的第二个 bug 终于终于被修复了!🎉 SR-2SR-4196 描述了 switch 语法嵌入到 #if / #endif 里的时候不能很好地运行,最近的一个 commit 终于修复了这个问题.

Xcode 9 里你可以使用 Undefined Behavior Sanitizer 检测所有未定义行为,Main Thread Checker 利用现有的 Address Sanitizer 和 Thread Sanitizer 来检测在非主线程刷新 UI 的行为,而。这些新功能都已经 merge 到 swift-lldb 里了,如果你感兴趣的话可以去看源代码。

提案

作为这篇去年发布的文章的跟进,Erica SadunOlivier HalligonCaleb DavenportBrian King 提交了一个关于 protocol extention 函数的 “role keywords” 的提案草稿。主要是讲了重写 protocol extension 里的函数时,需要加上一个关键字显式地声明这是一个 override 行为。

SE-0110 想要让多个参数 (String, Int) 的函数和单个元组 (String, Int) 参数区分开来。他们看起来是不是一样?就像 Doug Gregor 在邮件列表里提到的,这个修改会让编译过程变得有点复杂:

Swift 4 已经实现了超出 SE-0110 的内容了,特别对于闭包来说,使用体验差了很多。

[…]

Swift 核心团队觉得这些使用体验的牺牲对于 Swift 4 来说是不可接受的。已经有好几个计划内的解决方案,给闭包提供一个更好的模型,解决用户体验的问题,但完整的设计和实现已经超出了 Swift 4 的开发目标了。所以,我们打算“回滚” SE-0110 在 Swift 4关于函数参数的修改。

没人可以预知未来,很难了解这些提案对于 Swift 的影响,但这也是为什么我们有 snapshots builds 和 beta 版本。至于说 SE-0110 带来的影响 ,我觉得我们应该全部参与进社区里,去鼓励 Austin Zheng(SE-0110 的作者)继续坚持下去。

没有新的提案,但照例,更多细节请查看 Swift Evolution status page

邮件列表

还记得 SE-0104: Protocol-oriented integers 吗?Xiaodi Wu 最近写了一些优化实现方式的想法和建议

Halen Wooten 开了一个新的讨论,讨论作为社区的成员该如何为社区贡献。我知道邮件列表的界面很粗糙,但查看整个讨论总能有一些收获。根据文档尽量使用增量编译节省时间,我希望类似的这些技巧可以收集起来做成一份入门指南。

最后

学完 Swift 之后,你会希望做出什么样的语言?例如这个可能直接把访问权限去掉? 😱

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg

推荐阅读更多精彩内容

  • 作者:Jesse Squires,原文链接,原文日期:2017-06-29译者:四娘;校对:Cwift;定稿:sh...
    梁杰_numbbbbb阅读 685评论 0 0
  • 2016年10月12日 Objective-C id为Swift Any Swift 3接口与Objective-...
    魔灵FH阅读 2,610评论 0 19
  • 《父母的心》教学反思 “教学是一门遗憾的艺术”,这句话说得真好,走出了教学的课堂,我又走进了思考与...
    高蓓_3caf阅读 341评论 0 0
  • 原创图文|发愤的草莓 现在微课的帖子特别多,对吧?各式各样,经常出现在我们眼前。 我经常看到有位网友每天都在转发微...
    发愤的草莓阅读 1,521评论 7 32
  • 那时候,你喜欢A,恰巧A也喜欢你,于是你和A在一起了。 过了很久很久,你和A分手了,因为你想长大。然后你和B在一起...
    上错花轿嫁对郎阅读 65评论 0 0
  • 有一天,我对他说,想一个人静几天。 就在这之前,我去他家我们一起做晚饭吃,又突然想到在这之前有一次周末早上我开完会...
    小颖sss阅读 87评论 0 0