跳过正文

Posts

2018

避免在 Swift 中使用单例

原文:Avoiding singletons in Swift 原作者 & Copyright @johnsundell “我知道单例不好,但是…”,这是开发者常常在讨论代码的时候会提到的。貌似社区大家有共识 ── 单例不好。但是同时,包括 Apple 和第三方的 Swift 开发者还是在 App 内部或者共享的 frameworks 里不断在用它们。

Swift 中几种不同的依赖注入方式

·5 分钟
原文:Different flavors of dependency injection in Swift 原作者 & Copyright @johnsundell 在之前的几篇博客中,我们已经了解了几种使用依赖注入方式使得某个 swift app 拥有一个更加解耦可测试的架构。比如在 在 Swift 中使用工厂模式进行依赖注入 中和工厂模式结合,以及在避免在 Swift 中使用单例中替换程序中的单例对象等方式进行依赖注入。

那些我恢复 Mac 系统之后要安装的 Apps

·5 分钟
记录一下自己常用的 Mac Apps,每次重装之后到了用的时候发现忘记安装了(不是每次都用 TimeMachine 恢复),而且强烈简易大家如果某个 App 有对应的独立安装版本的话,购买其独立安装版本为好,沙盒环境以及和 Apple ID 绑定的特性就使得功能性以及灵活度大减。

What is LLVM

什么是 LLVM?隐藏在 Swift,Rust,Clang 等语言背后的奥秘 # 了解编译器是如何生成机器原生代码会使得倒腾新语言或者加强已经存在的编程语言变得比以往更加容易了。

In App Purchase

·7 分钟
对于在 App Store 中上架的应⽤来说,应⽤内购买(In-App Purchase,简称 IAP) 应该是一个避不开的话题,尤其是去年微信打赏和 Apple 之间的争执更让 IAP 火了一把,不仅仅大公司,作为个人开发者来讲,IAP 也是非常重要的,说不定就是你养家糊口的工具呢。

2017

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

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

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

·5 分钟
原文: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

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

@autoclosure && @escape

·3 分钟
我们知道在 swift 中,闭包(closure)是一等公民,因此可以被当作参数传递,在学习 swift 的过程中经常会看到某些关键字修饰该闭包,@autoclosure, @escape 就是其中比较常见的两种关键字。