Tagged

翻译

A collection of 4 posts

[译]Swift中的原子属性装饰器
翻译

[译]Swift中的原子属性装饰器

Swift中实现原子属性装饰器 来一篇快文,Property Wrappers我姑且叫它“属性装饰器”,是Swift 5.1中新增的最关键的功能,本文不深入解释,先了解的可以查看Swift 社区SE-0258提议。 原子、非原子属性 Objective-C中的属性默认都是原子的(atomic)。原子的意思是,它支持在不同线程安全的读写。非原子的属性,自然就无法确保这些,但是它的优势是可以快速读取属性。 原子的属性,在不同的线程中不一定是同义的(synonymous) 要实现一个原子属性,可以通过锁来实现,在Swift中通过不同的Apple框架的锁都可以实现这点: 通过Property Wrappers来定义一个原子的属性装饰器 在此使用NSLock 来实现原子属性。 @propertyWrapper struct Atomic<Value> { private var value: Value private let lock = NSLock() init(wrappedValue value: Value) { self.value

[译]Swift中的空字符串
Swift

[译]Swift中的空字符串

Swift 一个特色就是有很多的语法糖,初学可能觉得hold不住,实际用的时候倒是挺便利。 基于对此的喜爱,简单转译一篇短文,Empty Strings in Swift。 isEmpty属性 Swift中String是字符的结合,遵循Collection协议。因此会有isEmpty的属性,来判断字符串是否为空。 var isEmpty: Bool {get} Collection.swift的具体实现是: public var isEmpty: Bool { return startIndex == endIndex } "Hello".isEmpty // false "".isEmpty // true 不要使用count是否为0的方式来判断,这样会遍历整个字符串,性能差。 如何判断空白字符串 有时候的需求是判断字符串是否是空白字符串,因为设计字符编码的问题,通常不好实现。 " " // space "\t\r\