美文网首页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 关键字

    static 和 class 在 Swift 中 Static 和 class 都是表示「类型范围作用域」的关键字...

  • swift static和class的区别

    一、static和class 在Swift中static和class都表示“类型范围作用域”的关键字。在所有类型中...

  • Swift3.0(收藏文章)

    生来只为了遇见你···· 1、Swift3.0_关键字static和class的区别:http://blog.cs...

  • static 和 class

    Swift 中表示“类型范围作用域”这一概念的有两个不同的关键字, static 和 class 在非 class...

  • swift 中class和static

    https://www.jianshu.com/p/a53ea12b8009https://www.jianshu...

  • Swift_关键字static和class的区别

    关键字static和class的区别 在方法的func关键字之前加上关键字static或者class都可以用于指定...

  • static和class的区别

    1. 关键字static和class的区别 在方法的func关键字之前加上关键字static或者class都可以用...

  • Swift中static 和 class 关键字的用法:

    一、lazy关键字的用法: 1.类和结构体中,不能在枚举中使用 2.不能被子类重写,但可以在子类中给它添加监测功能...

  • Swift中的static和class

    一、定义类型方法 类型方法,都可以可以用 class或static定义。另外计算属性本质就是方法,所以也可以用 c...

  • iOS 10.17日记

    swift 学习 1 static和class的区别 2 学习手势的使用 3 swift 中kvo的使用(和oc...

网友评论

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

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