使用Property Wrapper创建Weak Array
Property Wrapper是什么 使用Property Wrapper创建Weak Array Property Wrapper是什么 属性包装器是Swift 5的一项强大功能。 为了更好的了解属性包装器,让我们举一个例子来看一下它们能解决哪些问题。 假如我们想要添加一个日志记录功能,每次属性更改时,我们都会将其新值打印到Xcode控制台。 这样追踪错误或追踪数据流时非常有用。 实现此目的的直接方法是覆盖setter: struct Bar { private var _x = 0 var x: Int { get { _x } set { _x = newValue print("New value is \(newValue)") } } var bar = Bar() bar.x = 1 /// print 'New value is 1' } 如果我们继续记录更多的这样的属性,那么代码很快就会变得一团糟。 为了不用每个新属性一遍又一遍的复制相同代码,我们声明一个新类型,该新类型将执行日志记录: struct ConsoleLogged<Value> { private var value: Value init(wrappedValue: Value) { self.value = wrappedValue } var wrappedValue: Value { get { value } set { value = newValue print("New value is \(newValue)") } } } 这是我们如何使用ConsoleLogged重写Bar的方法:...