其他分享
首页 > 其他分享> > Swift中如何实现注解

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