新闻
- Google 表示可能会将 Swift 作为 Android 开发的头等语言:Swift 自从发布以来就受到了很多开发者的欢迎,而在开源之后 Swift 的应用平台和使用场景得到了极大扩展,业界对于 Swift 开发者的需求也正在爆发式增长。最近,Google,Facebook 和 Uber 的开发人员在伦敦对这门语言进行了一些讨论。Google 的相关负责人表示正在考虑将 Swift 引入 Android 开发中,从而逐渐减少对 Oracle 和 Java 的依赖。相对于更容易移植和适配的 Kotlin,Swift 在编译速度上具有优势。而 Facebook、Uber 和 Lyft 等知名互联网企业也已经纷纷在自家的产品中使用了 Swift。在 Swift 开源后,其一大优势就是能够在服务器和客户端使用统一的语言,在有像是 IBM 这样的企业的支持下,Swift 正在向着这一愿景前进。
- 更加轻薄的 Apple Watch 第二代产品可能在 WWDC 上公布:Apple Watch 初代产品虽然在同类竞品中算是佼佼者,但是远没有达到市场预期。有限的应用场景和相对不便的佩戴体验可能是造成这一结果的重要因素。有消息称 Apple 可能在今年 WWDC 发布 Apple Watch 的第二代产品。相比于现在的 Apple Watch,新版本在厚度上将会减少 20% ~ 40%,并可能配置可以进行 Facetime 的摄像头和更好的 WiFi 模块。究竟新的 Apple Watch 能有何表现,第三方开发者们能在这个平台实现怎样的创意和功能,还要让我们拭目以待。
教程
- 教你用Xtrace 读懂Mantle 源码: Xtrace 是 iOS 开发中一个强大的调试框架,能详细打印出一个某个方法被调用的堆栈,方便调试时定位问题。这篇文章介绍了使用 Xtrace 追踪 Mantle 的调用,逐步帮助我们理解 Mantle 行为和源码的一个例子。在我们需要调试的代码和问题比较复杂的时候,使用 Xtrace 来进行辅助会是一个很好的选择。
- Swift 2 throws 全解析 - 从原理到实践:throws 关键字和异常处理机制是 Swift 2 中新加入的重要特性。Apple 希望通过在语言层面对异常处理的流程进行规范和统一,来让代码更加安全,同时让开发者可以更加及时可靠地处理这些错误。这篇文章从 throws 的内部实现探索了 throws 的一些细节,并为我们带来了在日常开发中使用 Swift 异常机制的一些实践方法。
- Using Swift Extensions The “Wrong” Way :Swift 中 extension 一般用来表示类型对某个接口进行扩展,但是这并不是 extension 的唯一用法。匿名的 extension 也可以用来对代码进行更好地组织,使其清晰可读。这篇文章为我们介绍了那些关于 extension 的“错误”用法,虽然这些用法并没有实际去将类型按照某个接口进行扩展,但是这并不是一种反模式的代码设计行为。恰恰相反,使用这些方法能够让代码更加优雅。
- 用更 Swifty 的代码遍历数据:在遍历一个 Array 的时候,我们可能会用 `for .. in`、`map`、`flatMap` 或者是 `forEach` 等等,这篇文章基于 `flatMap`,使用了一些模式匹配的方法来更好地处理 [T?] 。通过为 `SequenceType` 添加一些便利方法,我们可以用一种更易读和可维护的方式来更好地对存储可选值类型的数组进行遍历。
开源项目
- SwiftyMarkdown :一个将 markdown 转换为 `NSAttributedString` 的框架。相比于其他一些 markdown 解析的框架,SwiftyMarkdown 使用的是 Cocoa 框架的 `NSScanner` 来进行的实现,因此代码相对简单。不过如果你需要处理较多的 markdown 内容,可能选择其他一些更底层的实现会更合适。
- SwiftSVG :解析和显示 SVG 的库,可以将输入的字符串,文件,URL 等来源的 SVG 资源转换为可以直接描画显示的 `UIBezierPath` 对象。另外,该框架还额外提供一个 `SVGView` 来帮助开发者在 Interface Builder 中显示和调试 SVG 资源。如果你的应用中有需要用到或者显示 SVG 矢量图片资源的话,这个库会是很好的选择。
- KMNavigationBarTransition :用来统一管理导航栏转场以及当 push 或者 pop 的时候使动画效果更加顺滑的通用库。自定义 Navigation View Controller 导航栏的背景或者状态是 iOS 开发者一定会遇到的课题,这个框架帮助我们将复杂的操作细节进行了封装,而使用者只需要关心目标 view controller 的样式即可。
感谢徐川对本文的审校。
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论