如题,OC可以通过以下代码在category里面加属性,Swift如何在extension里面加存储属性啊
-(UIView *)statusBarMask{
return objc_getAssociatedObject(self, &statusBarMaskKey);
}
-(void)setStatusBarMask:(UIView *)statusBarMask{
objc_setAssociatedObject(self, &statusBarMaskKey, statusBarMask, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
存储属性 一般类创建实例后 很难 对其数据进行添加 所以 一般来说 存储属性 是无法增加的
可以根据这样的办法
extension CALayer {
private struct AssociatedKeys {
static var shapeLayer:CAShapeLayer?
}
var shapeLayer: CAShapeLayer? {
get {
return objc_getAssociatedObject(self, &AssociatedKeys.shapeLayer) as? CAShapeLayer
}
set {
if let newValue = newValue {
objc_setAssociatedObject(self, &AssociatedKeys.shapeLayer, newValue as CAShapeLayer?, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}
}