模块化 Xcode 工程

原文:Modular Xcode projects

原作者 & Copyright @pepibumur

翻译:@OgreMergO

使用 Xcode 构建模块化的工程就需要对工程结构以及其基础概念有很好的理解才行。

我们平时不怎么关注工程结构本身,只有在工程逐渐变大,要添加更多依赖的时候才会注意的到。而即使到了这个时候,我们大多数的工程都会使用 CocoaPods 来设置那些依赖项,或者 Carthage, 后者虽然没有帮我们做依赖性的设置,但是使得我们会更容易的,通过在工程的 build phase 选项中添加一些内容,达到同样的目的。当配置项越来越复杂,我们就很容易产生困惑,这是因为我们并没有完全掌握 Xcode 工程中所涉及的所有元素。我经常被问到的问题如下:

在 Swift 中使用工厂模式进行依赖注入

原文:Dependency injection using factories in Swift

原作者 & Copyright @johnsundell

依赖注入是一项使得代码更加可测试的关键工具。我们不需要持有某些对象,或者创建这些对象的自有依赖,或者通过单例来获取他们,而是尽可能使那些对象能够正常运转所必须的一切内容(其他对象)通过外界传入,这样做的好处在于,一方面能清晰的看得到某个对象的所有依赖项,另一方便也使得测试工作变得更为简单(因为我们可以模拟这些依赖项来捕获、验证状态以及值。)

处理 Swift 中非可选的可选值类型

原文:Handling non-optional optionals in Swift 原作者 & Copyright @johnsundell

可选值(optionals)无可争议的是 swift 语言中最重要的特性之一,也是和其他语言,例如 Objective-C 的最大区别。通过强制处理那些有可能出现 nil 的地方,我们就能写出更有预测性的以及更健壮的代码。

理解响应者和响应链

Apps 是通过响应者(responder)对象来接收和处理事件的。一个响应者对象是 UIResponder 类的一个实例,我们常见的 UIView,UIViewController 以及 UIApplication 都是 UIResponder 的子类。 UIKit 自动帮你管理着这些 responder 相关的行为,包括事件是如何从一个 responder 传递给另一个 responder 的等等。当然,你也可以修改你的 app 中事件传递的默认行为。

Capturing objects in Swift closures

原文:Capturing objects in Swift closures 原作者 @johnsundell

自从 Block 在 iOS4 被引入 Objective-C 的世界之后就成为了 Apple 各平台上最时髦的 API 的重要组成部分了。当 Swift 语言出现的时候,blocks 的概念就摇身一变通过 closure 的形式引入,成为了目前我们可能每一天都在用的语言特性之一了。