MENU

分类 iOS 下的文章

Swift 4.1 中的 Codable 改进

2018-2-24.jpeg

Apple 在 Swift 4.0 中作了很多的改进,其中我个人最喜欢的就是 Codable 协议的出现。它让 Swift 自带了 JSON 、 XML 结构化数据和 Model 的映射和转换能力。

Codable 最常见的使用场景就是:APP 发起网络请求,然后我们将服务端响应的 JSON 数据转换为对应的 Model 实体。由于服务端的编程规范可能与客户端存在差异, Codable 默认数据转换实现可能不再适用。例如,服务端可能使用的蛇形命名方式而客户端使用的是驼峰。此时我们就需要在客户端自己动手实现映射关系。

阅读全文

如何让系统单例更易测试

Cover

UIApplicationUIScreen 为代表的单例模式是 iOS 中最为常见的设计模式了,你可以在代码中的任意位置调用其属性或者方法。但是这种便利也给程序代码来一些负面影响,这种全局共享状态的做法对于代码测试来说简直就是噩梦。虽然我们可以对部分单例进行重构,但是系统单例依旧需要一些技巧进行改造才能变成测试友好对象。

阅读全文

Swift 线程安全数组

Cover

有并发的地方就存在线程安全问题,尤其是对于 Swift 这种还没有内置并发支持的语言来说线程安全问题更为突出。下面我们通过常见的数组操作来分析其中存在的线程问题,以及如何实现一个线程安全数组。

阅读全文

Swift 中单例模式的替换

Cover

除了 MVC、MVVM 之外,单例模式可以说是 iOS 开发中另一常见的设计模式。无论是 UIKit 或是一些流行的三方库,我们都能看到单例的身影。而我们开发者本身也会潜意识地将这些类库中的代码当作最佳实践并将其带入日常工作中,哪怕很多人都知道单例存在一些明显的缺陷。

针对单例的缺陷,本文将介绍一些替换或改造单例模式的方法来提升代码质量。

阅读全文

Switch 新知

Cover

从概念提出以来 Switch 语法几乎是所有高级编程语言的标配,而 Swift 中的类型系统则进一步放大了它使用场景。正常情况下,我们会在对某个变量进行多状态判断时使用 Switch 语句。这样代码的控制流就与某一特定状态进行了绑定,同时代码也变得可读性强更易调试。

阅读全文