Swift中如何实现注解
作者:互联网
@propertyWrapper
顾名思义,就是用来包装属性。包装一个属性,使得外界在使用该属性的时候,并无其他不同,但是属性包装器可以对属性的读和写进行监听,比如说,对该属性读和写的过程进行加锁,来保证读写安全
如何实现一个属性包装器
@propertyWrapper
public class Protected<Value> {
#if os(Linux) || os(Windows)
let lock = NSLock()
#else
let lock = UnfairLock()
#endif
private var value:Value
public init(_ value:Value) {
self.value = value
}
public var wrappedValue:Value { //该方法必须实现,用来获取和设置被包装的属性
get { lock.around { value } }
set { lock.around { value = newValue } }
}
public init(wrappedValue:Value) {//该初始化方法必须实现,被包装的对象会调用该方法来初始化属性包装器
self.value = wrappedValue
}
}
使用属性包装器
public class Student {
var age:Int
@Protected
var name:String
init(name:String,age:Int) {
self.age = age
self.name = name
}
}
属性包装器的原理
1.实例化一个属性包装器对象通过:init(wrappedValue:Value)
2.在Student 内部创建一个_name的私有变量,当我们在外界调用.name的时候,实际上调用的是_name.wrappedValue
标签:name,包装,value,如何,Value,注解,Swift,public,属性 来源: https://www.cnblogs.com/mengqingxiang/p/16421567.html