import UIKit
/**
* 模仿SwiftUI @State注解
*
**/
@propertyWrapper
struct AState<T> {
// class 是引用,不存在值拷贝的情况
private var bind: B
init(wrappedValue : T) {
bind = B(wrappedValue)
}
var wrappedValue : T {
get {
self.bind.val
}
nonmutating set {
self.bind.val = newValue
}
}
class B {
var val : T
init(_ wrappedValue: T) {
self.val = wrappedValue
}
}
}
struct CT {
@AState var val:String
}
// 测试输出
var ct = CT(val: "222")
var ct2 = ct
ct.val = "111"
print("ct >> \(ct.val)")
print("ct2 >> \(ct2.val)")
SwiftUI 装饰器 @State
于 2019-12-11 16:05:49 首次发布