美文网首页
Swift如何借助Extension增加存储属性

Swift如何借助Extension增加存储属性

作者: 凯司机 | 来源:发表于2021-06-18 18:22 被阅读0次

// 关联对象(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)

相关文章

  • Swift如何借助Extension增加存储属性

    // 关联对象(Associated Object)// 在Swift中,class依然可以使用关联对象// ...

  • 协议和扩展

    Swift Extension 添加存储属性 wift不允许在extension中直接添加「存储属性」。但是在我们...

  • iOS原理篇:关联对象

    前言 Swift中不能再extension中为类添加存储属性,如何利用关联对象变相添加属性呢? 关联对象相关API...

  • Swift 如何extension(拓展)存储属性

    语法层面是不支持的,与OC一样通常使用关联对象实现本文书写时Swift5.6 第一种 第一种就是static va...

  • Swift Extension 添加存储属性

    Swift不允许在Extension中直接添加「存储属性」。但是在我们的实际开发中经常会用到使用Extension...

  • swift-类目添加属性

    Swift不允许在extension中直接添加「存储属性」。但是在我们的实际开发中经常会用到使用extension...

  • [Swift]为Extension添加存储属性

    众所周知, 在Swift的扩展(Extension)中只能添加计算属性, 但是有时候, 我们需要添加存储属性的话,...

  • 如何在Swift扩展中添加存储属性

    .一般而言,swift的扩展Extension只能添加计算属性,不能添加存储属性。当然,如果利用run time也...

  • Swift进阶(三)--- 属性

    Swift的属性 在swift中,属性主要分为以下几种: 存储属性 计算属性 延迟存储属性 类型属性 一:存储属性...

  • Swift 属性

    Swift 属性 在Swift中属性主要分为存储属性、计算属性、延迟存储属性、类型属性这四种,并且Swift还提供...

网友评论

      本文标题:Swift如何借助Extension增加存储属性

      本文链接:https://www.haomeiwen.com/subject/gmklyltx.html