作者:Olivier Halligon,原文链接,原文日期:2016-06-20
译者:Crystal Sun;校对:numbbbbb;定稿:千叶知风

好吧,好悲伤,我今年没能参加 WWDC 大会 😢,只能看视频 🎥 和 Twitter。我打赌你们肯定都看了发布会的重要内容(至少看了 keynote)和各个平台的新动态 🎉。不过你知道那些悄悄加进去的新 API 吗?🕵

列出这个清单的目的

每年 WWDC 的问题就是会发布成吨的信息、通知、视频,以至于都没有时间来观看和体验所有东西!

列这个清单并不是想让你看到精疲力尽,只是帮你发现一些你可能会遗漏的主题。有了这个清单,你就能够决定花时间看哪些 WWDC 的视频、阅读哪些文档、以及在 playground 里体验哪些新的 API…当然前提是你有时间。

阅读全文

作者:Russ Bishop,原文链接,原文日期:2016-06-14
译者:小袋子;校对:saitjr;定稿:CMB

Xcode 8 现在开始支持一套官方的扩展 API。第一个支持的扩展类型就是源码编辑器的扩展(虽然很可能不是最后一个)。另一方面, Xcode 8 采用了系统完整性保护功能(即 SIP,System Integrity Protection)。 这意味着想要将代码注入到 Xcode 进程已经不可能了,并且 Alcatraz 的业务也关闭了。

阅读全文

作者:Dominik Hauser,原文链接,原文日期:2015/04/19
译者:小锅;校对:Channe;定稿:numbbbbb

昨天我收到一个问题,作为一个 Swift 初学者应该先学什么。下面是原问题:

我有一些疑惑,TDD(测试驱动开发)是否值得花时间学习,或者我应该把时间花在学习 Swift 以及函数式编程上?

当然,我的观点会有所倾向,因为我写过一本关于 TDD 的书。所以,当你阅读我的答案的时候,要记住这一点。

阅读全文

作者:Erica Sadun,原文链接,原文日期:2016-06-09
译者:天才175;校对:shanks;定稿:千叶知风

亲爱的埃丽卡:“对于还没追随最新进展的人来讲,你认为 Swift 3 将会有哪些最重大或最出色的改变?说实话,我有点失望。相对于 Swift 1 到 2 的改变(即协议扩展),给我的感觉就像是虽然有重大的改变,但不是那种能改变你如何设计一个程序的”

我不能肯定地说“没有新的范式转变”是一件坏事。作为一种语言,Swift 显然知道它是怎样的。它还没有达到完全成熟(不完整泛型就能很好地说明这门语言还需要在烤箱里多待一会儿),但是已经确定了是什么样。清晰的 Swift 理念正在推动着进展。

阅读全文

译者:泊学

提交 review 前必读

做为下面三份文档的一部分,它们的内容是彼此关联的:

这三份文档的内容是相互关联的(例如:标准库中一个 API 的调整和某个 API guideline 是对应的,或根据某条设计指南制定的 Clang importer 规则,等等)。正因为存在这些内容交叉,为了保证讨论是可维护的,我们希望你:

  • 在提交 review 之前,对以上三份文档中的全部内容,有一个基本的了解
  • 在提交以上三个文档的 review 时,请参照每个文档的 review 声明。在你提交 review 时,如果文档间交叉引用有助于帮你阐述观点,你应该包含它们(这也是被提倡的做法)。

阅读全文

作者:Natasha,原文链接,原文日期:2016/01/13
译者:bestswifter;校对:saitjr;定稿:千叶知风

Swift 最棒的特点之一就是它内置了对整体结构的不可变性的支持,这使得我们的代码更加整洁、安全(关于这个话题,如果还没看过这篇文章,那么强烈推荐给你)。

不过,真的需要用到可变性时,你应该怎么做呢?

阅读全文

作者:Andyy Hope,原文链接,原文日期:2016/02/03
译者:saitjr;校对:Channe;定稿:aaaron7

从我决定拥抱 Swift 到现在已经 8 个月了。这几个月中,我一边学习着如何避免写出 Objective-C 风格的 Swift 代码,一边真正开始使用这门新语言。

不过最近我才发现,我的 CGGeometry 系列里结构体写法还不是 Swift 风格。

CGRect, CGSize, CGPoint

阅读全文

作者:Gabriel Theodoropoulos,原文链接,原文日期:2016-05-12
译者:小铁匠Linus;校对:Channe;定稿:numbbbbb

在 Xcode 7 的所有功能中,有一个很特别:它给编写代码文档提供了一个更好的方法。随着 Xcode 7 的更新,开发者可以使用 Markdown 语法书写富文本格式的代码文档,而且可以结合特定的关键词来指明特殊部分(如参数,函数返回结果等)。作为新支持的 Markdown 文档样式,它具有以下几点优势:文本样式的自定义程度更高,更加灵活,当然也更有趣。然而,如果你仍然对原来的文本样式感兴趣的话,也可以看以前那篇教程

阅读全文

作者:Erica Sadun,原文链接,原文日期:2016-06-13
译者:小铁匠Linus;校对:numbbbbb;定稿:numbbbbb

今年,苹果的 WWDC 演讲在更新其产品线的同时并没有太多的惊喜和创新。虽然观众都在热情地回应,但我并不确定科技新闻会为此喝彩。

我很喜欢 iOS playgrounds,它为教育机构(如斯坦福)提供了一种比看教程更好的方式。我自己写的 Sherlocked 也可以退休了(译者注:作者影射了新推出的 universal clipboard 抢走了她的饭碗 =。= )。此外,Xcode 开放了源码编辑器的扩展功能,同时也开放了部分 Siri API。

阅读全文

作者:Wooji Juice,原文链接,原文日期:2016-04-08
译者:Lanford3_3;校对:shanks;定稿:CMB

在 iOS 平台的 app 中,有种列表设计非常常见: 一个 table view, 里面是一个项目列表,每个项目只有一行简单的文字,对于被选中的项目,后面会有一个对勾。

当然,往往有着许多更好的方式来实现这种列表的功能,特别是在你的 app 中 UI 处于核心地位的时候。但是,用户们熟悉这种列表的展示方式,比如 App 中的设置页面,使用这种列表来表现是非常实用的。实际上,iOS 系统的设置页面也随处可见这种列表。让我们来为这篇文章找个案例–点开系统的设置,在其中点击信息一栏,然后点击保留信息,之后你就可以选择信息保留的时限:“30 天”,“一年” 或是 “永久”。

阅读全文

作者:Olivier Halligon,原文链接,原文日期:2015-12-17
译者:JackAlan;校对:靛青K;定稿:Channe

今天的文章讲解如何在 Swift 中进行错误处理。

说实话,为了配合这个冬季❄️☃️,我取了一个有趣的文章标题。

译者注:原文标题为 Let it throw, Let it throw! 是模仿冰雪奇缘的主题曲 Let it go ,并且文章的副标题也在模仿冰雪奇缘的经典台词。

阅读全文

作者:Mike Ash,原文链接,原文日期:2016-01-29
译者:ray16897188;校对:Channe;定稿:千叶知风

Swift 的类对大多数刚接触编程语言的人来说是很容易理解的,它们和其他语言中的类十分类似。无论你是从 Objective-C、Java 还是 Ruby 过来的,在 Swift 中对于类的使用并无太大区别。而 Swift 中的结构体就是另外一回事儿了,它们有点儿像类,但是它们是值类型,还没有继承,另外我总是听到这个什么 copy-on-write(写入时复制)的说法。那么 Swift 中的结构体是存在哪里?它们是怎么个工作原理?今天我们来仔细研究一下如何在内存中保存和操作结构体。

阅读全文

作者:Erica Sadun,原文链接,原文日期:2016/05/02
译者:saitjr;校对:Channe;定稿:Cee

Erica,你好,在我想在 Playground 运行以下代码时,编译未通过。错误原因:“error: ‘NSLog’ is unavailable: Variadic function is unavailable NSLog(“%@”, Foo()) Foundation.NSLog:2:13: note: ‘NSLog’ has been explicitly marked unavailable here(错误:’NSLog’ 不可用:可变参数函数不支持 NSLog(“%@”, Foo())。’NSLog’ 在此已被标记为不可用)”。这是为什么呢?

import Foundation
class Foo {}
NSLog("%@", Foo())

阅读全文

作者:Olivier Halligon,原文链接,原文日期:2016-05-16
译者:walkingway;校对:Cee;定稿:numbbbbb

现在我们来重新回顾下前三弹模式匹配的各种语法 第一弹第二弹第三弹,第四弹是本系列的最后一篇文章,本章会教大家使用 if case letfor case where 等一些高级语法,让我们拭目以待吧!

本篇文章会结合本系列前三篇文章提到的语法,然后将它们应用在一些更先进表达式中。

阅读全文

作者:Natasha The Robot,原文链接,原文日期:2016/05/12
译者:saitjr;校对:Channe;定稿:CMB

和我一起参加9 月 1 日 - 9月 2 日在纽约举办的 Swift 社区庆典🎉吧!使用优惠码 NATASHATHEROBOT 可以获得 $100 的折扣!

我最近做了个 Swift 面向协议编程实践(POP💥) 的演讲。视频还在处理中。另一方面,这是演讲中 POP 视图部分的文本记录,供我和其他任何人作参考!

阅读全文

作者:Andyy Hope,原文链接,原文日期:2016-03-23
译者:saitjr;校对:numbbbbb;定稿:shanks

Objective-C 已经出现好些年了。在这期间,开发者们遵循着各种代码风格,希望能提高可读性,为今后的版本迭代做准备。但是 Swift 不同。Swift 还是门很新的语言,没有专门的或者最广泛的编码风格可以遵循。所以很多时候我们需要自己去摸索。

幸运的是,在我最近一年的工作中,Swift 占到了 98.2%。在这期间,我学到了很多很棒的编码风格,今天就来分享一下。

阅读全文

作者:Natasha The Robot,原文链接,原文日期:2016-05-13
译者:Lanford3_3;校对:numbbbbb;定稿:Channe

和我一起参加9 月 1 日 - 9月 2 日在纽约举办的 Swift 社区庆典🎉吧!使用优惠码 NATASHATHEROBOT 可以获得 $100 的折扣!

我最近做了个 Swift 面向协议编程实践(POP💥) 的演讲。视频还在处理中。另一方面,这是演讲中 POP 视图部分的文本记录,供我和其他任何人作参考!

阅读全文

作者:uraimo,原文链接,原文日期:2015-10-08
译者:靛青K;校对:Channe;定稿:shanks

这是一篇 Swift 2.0 的文章,本文源码在 GitHub ,你也可以直接下载 zipped

Swift 依然是一个有些不稳定的语言,每次发布新版本,都带来新的功能和特性。许多人都已经写了 Swift 的函数的相关内容以及如何用更“纯”的函数式的方法处理问题。

阅读全文

作者:uraimo,原文链接,原文日期:2016-05-05
译者:aaaron7;校对:numbbbbb;定稿:shanks

通过递归来实现算法往往比基于循环的实现来得更加清晰,但递归的实现会因为每次方法调用的时候都需要分配和管理栈帧而导致额外的开销,这会导致递归的实现很慢而且有可能很快就耗尽了栈空间(也就是栈溢出)。

为了避免栈溢出,一个推荐的做法是把程序重写成尾递归的形式来利用一些编译器的尾递归优化的功能来避免溢出。

但我们不仅会想,普通递归和尾递归的区别到底是什么?编译器的尾递归优化到底是做了怎样的事情?

阅读全文