详解Swift的类型检查器
原文链接: Exponential time complexity in the Swift type checker
原文作者: Matt Gallagher
译文出自: 掘金翻译计划
译者: Zheaoli
校对者: geeeeeeeeek, Graning
这篇文章将围绕曾不断使我重写代码的一些 Swift 编译器的报错信息展开:
错误:你的表达式太过于复杂,请将其分解为一些更为简单的表达式。(译者注:原文是 error: expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions)
我会看那个触发错误的例子,谈谈以后由相同底层问题引起以外的编译错误的负面影响。我将会带领你看看在编译过程中发生了什么,然后告诉你,怎样在短时间内去解决这些报错。
我将为编译器设计一种时间复杂度为线性算法来代替原本的指数算法来彻底的解决这个问题,而不需要采用其余更复杂的方法。
正确代码的编译错误如果 ...
如何检测iPhone处于低电量模式
原文链接 : Detecting low power mode
原文作者 : useyourloaf
译文出自 : 掘金翻译计划
译者 : Zheaoli
校对者 : LoneyIsError, wild-flame
这个星期,我阅读了一篇关于Uber怎样检测手机处于省电模式的文章。(注:文章连接是Uber found people more likely to pay) 在人们手机快要关机时,使用Uber可能会面临更高的价格。 这家公司(注:指Uber)宣称他们不会利用手机是否处于节能模式这一数据来进行定价, 但是这里我想知道 我们怎么知道用户的iPhone处于低电量模式
低电量模式在iOS 9中,苹果为iPhone手机新添加了 低电量模式 功能。在你能充电之前,低电量模式通过关闭诸如邮件收发,Siri,后台消息推送能耗电功能来延长你的电池使用时间。
在这里面,很重要的一点是,是否进入低电量模式是由用户自行决定的。 你需要进入电池设置中去开启低电量模式。当你进入低电量模式的时候,状态栏上的电池图标会变成黄色。
当你充电至80%以上时,系统会自动关闭低电量模式。
低电量模式 ...
在Swift中实现撤销功能
原文链接 : Undo History in Swift
原文作者 : chriseidhof
译文出自 : 掘金翻译计划
译者 : Zheaoli
校对者: xcc3641, Jaeger
在过去的一段时间里,有很多的Blog推出了关于他们想在Swift中所添加的动态特性的文章。事实上Swift 已经成为了一门具有相当多动态特性的语言:它拥有泛型,协议, 头等函数(译者注1:first-class function指函数可以向类一样作为参数传递),和包含很多可以的动态操作的函数的标准库,比如map和filter等(这意味着我们可以利用更安全更灵活的函数来代替 KVC 来使用 字符串)(译者注2:KVC指Key-Value-Coding一个非正式的 Protocol,提供一种机制来间接访问对象的属性)。对于大多数人而言,特别希望介绍反射这一特性,这意味着他们可以在程序运行时进行观察和修改。
在Swift中,反射机制受到很多的限制,但是你仍然你可以在代码运行的时候动态的生成和插入一些东西。 比如这里是怎样为NSCoding或者是JSON动态生成字典的实例。
今天在这里,我们将一 ...
关于PostCSS的一点小科普
原文链接 : PostCSS – What It Is And What It Can Do
原文作者 : Jake Bresnehan
译文出自 : 掘金翻译计划
译者 : Zheaoli
校对者: aidistan, JolsonZhu
PostCSS起源于2013年9月,发展到现在,已经有很多开发者在工作中使用它。如果你尚未接触过PostCSS,这篇文章正适合你。
PostCSS是一个使用JavaScript插件来转换CSS的工具。
PostCSS本身很小,其只包含CSS解析器,操作CSS节点树的API,资源生成器(译者注1:原文是source map),以及一个节点树字符串化工具。所有的黑魔法都是通过利用插件实现的。
截止目前,PostCSS的生态圈内已经拥有超过100种插件。这些插件可以做太多的事情,比如lint(译者注2:一种用来检测CSS代码的工具),添加vendor prefixes(译者注3:添加浏览器内核前缀,可以使用浏览器的一些独有特性),允许使用最新的CSS特性,在你的CSS里提供统计数据,或者是允许你使用Sass,Less或是Stylus等CSS预 ...
Swift 3.0 新增安全特性的一点普及
原文链接 : WWDC 2016: Increased Safety in Swift 3.0
原文作者 : Matt Mathias
译文出自 : 掘金翻译计划
译者 : Zheaoli
校对者: llp0574, thanksdanny
在 Swift 发布之后,Swift 的开发者一直在强调,安全性与可选择类型是 Swift 最为重要的特性之一。他们提供了一种nil的表示机制,并要求有一个明确的语法在可能为nil的实例上使用。
可选择类型主要以下两种:
Optional
ImplicitlyUnwrappedOptional
第一种做法是一种安全的做法:它要求我们去拆解可选类型变量是为了访问基础值。第二种做法是一种不安全的做法:我们可在不拆解可选择类型变量的情况下直接访问其底层值。比如,如果在变量值为 nil 的时候,使用 ImplicitlyUnwrappedOptional 可能会导致一些异常。
下面将展示一个关于这个问题的例子:
1234let x: Int! = nilprint(x) // Crash! `x` is nil!
在 Swift 3.0 中, ...
好与坏,Swift面面观 Part2
原文链接 : Good Swift, Bad Swift — Part 2
原文作者 : Kristian Andersen
译文出自 : 掘金翻译计划
译者 : Zheaoli
校对者: owenlyn, yifili09
不久之前,在我写的好与坏,Swift面面观 Part1一文中,我介绍了一些关于在 Swift 里怎样去写出优秀代码的小技巧。在 Swift 发布到现在的两年里,我花费了很长时间去牢牢掌握最佳的实践方法。欲知详情,请看这篇文章:好与坏,Swift面面观 Part1.
在这个系列的文章中,我将尝试提炼出我认为的 Swift 语言中好与不好的部分。唔,我也希望在未来有优秀的 Swift 来帮助我征服 Swift (唔,小伙子,别看了,中央已经决定是你了,快念两句诗吧)。如果你有什么想法,或者想告诉我一点作为开发者的人生经验什么的话,请在 Twitter 上联系我,我的账号是 ksmandersen。
好了废话不多说,让我们开始今天的课程吧。
guard 大法好,入 guard 保平安在 Swift 2.0 中, Swift 新增了一组让开发者有点陌生的的特性。 ...