美文网首页Swift
Swift 中的 static 和 class 关键字

Swift 中的 static 和 class 关键字

作者: 雪碧童鞋 | 来源:发表于2020-03-18 16:14 被阅读0次

    static 和 class

    在 Swift 中 Staticclass 都是表示「类型范围作用域」的关键字。

    在所有类型(class、struct、enum )中使用 static 修饰都可以表示类方法类与属性(包括存储属性和计算属性)。

    class 是专门用在 calss 类型中修饰类方法和类的计算属性(注意:无法使用 class 修饰存储属性)。

    在 class 类型中 static 和 class 的区别

    在 class 类型中 staticclass 都可以表示类型范围作用域,那区别是什么?

    1. class 无法修饰存储属性,而 static 可以。
    2. 使用 static 修饰的类方法和类属性无法在子类中重载。也就是说 static 修饰的类方法和类属性包含了 final 关键字的特性。相当于 final class

    static 在 Protocol 中的使用

    Swift 中 class,struct,enum 都可以实现某个指定 protocol。在 protocol定义一个类方法或者类计算属性,显而易见,应该使用 static 关键字来修饰。使用 protocol 时,在 struct 和 enum 中仍然使用 static,在 class 类型中 classstatic 关键字都可以使用。

    附:计算属性和存储属性区别

    计算型属性

    • 执行函数返回其他内存地址
    • 计算型属性本身不占用内存空间
    • 计算属性可以用于类、结构和枚举里
    • 不直接存储值,而是用get/set来做.可用来操作其他属性值的变化
    var userName: String?
    var nanme: String {
        get {
            return "miFanTongXie"
         }
    //set里面不能自己给自己赋值,否则会导致死循环
         set {
             userName = newValue
         }
    }
    

    存储型属性

    • 需要开辟空间,以存储数据
    • 存储属性只能用于类和结构体里

    相关文章

      网友评论

        本文标题:Swift 中的 static 和 class 关键字

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