class Animal { }
extension Animal {
//key使用占用内存小的类型Bool或Void?均为1个字节
private static var AGE_KEY = Void?
private static var WEIGHT_KEY = Void?
var age: Int {
get {
objc_getAssociatedObject(self, &Self.AGE_KEY) as! Int
}
set {
objc_setAssociatedObject(self, &Self.AGE_KEY, newValue, .OBJC_ASSOCIATION_ASSIGN)
}
}
var weight: Int {
get {
objc_getAssociatedObject(self, &Self.WEIGHT_KEY) as! Int
}
set {
objc_setAssociatedObject(self, &Self.WEIGHT_KEY, newValue, .OBJC_ASSOCIATION_ASSIGN)
}
}
}