从OC到Swift(6)- 关联对象

关联对象(Associated Object)

  • 在Swfit中,class依然可以使用关联对象
  • 默认情况,extension不可以增加存储属性的
  • 借助关联对象,可以实现类似extension为class增加存储属性的效果
class Person {}
extension Person {
    private static var AGE_KEY: Void?
    var age: Int {
        get {
            (objc_getAssociatedObject(self, &Self.AGE_KEY) as? Int) ?? 0
        }
        set {
            objc_setAssociatedObject(self, &Self>AGE_KEY, newValue, .OBJC_ASSOCIATION_ASSIGN)
        }
    }
}
var p = Person()
print(p.age) // 0
p.age = 10
print(p.age) // 10
上一篇:IIS+PHP+MYSQL搭建


下一篇:springboot目录结构、重要配置文件、重要注解的详解