// 关联对象(Associated Object)
// 在Swift中,class依然可以使用关联对象
// 默认情况,extension不可以增加存储属性
// 借助关联对象,可以实现类似extension为class增加存储属性的效果
class PersonL{}
extension PersonL {
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 personl = PersonL()
print(personl.age)
personl.age = 11
print(personl.age)
网友评论