static 和 class

作者: sprint | 来源:发表于2015-09-23 11:35 被阅读286次

在swift中 static和class都是用来表示”类型范围作用域“,但是在oc中并不会特别区分,而在swift中这两个关键字不能混用。

在非class的类型中我们使用static来定义类型作用域,包括enum和struct,我们可以在类型范围内声明并使用存储属性,计算属性和方法,

struct Point {

  let x:Double

  let:y:Double

 static let  zero = Point(x:0,y:0)//存储属性

 static var ones:[Point]  {

    return [zero,Point(x:1,y:1),Point(x:2,y:2)]

 }

 static func add(p1:Point,p2:Point) { 

   return Point(x,p1.x+p2.x,y:p1.y+p2.y);

 }

}

class关键字是专门用在class类型上下文中,可以用来修饰类方法及计算属性,但是不能出现class的存储属性

class MyClass  {

class var name:String? 

}

会得到编译错误 class variables not yet supported

在swift1.2及以后,我们可以在class中使用static来声明一个类作用域的变量:

class MyClass  {

static var name:String?

}

有一个比较特殊的是protocol ,在swift中class struct enum都可以实现protocol, 那么如果在protocol中定义一个类型域上的方法或者计算属性,应该选用哪个关键字呢?答案是static,而在class中 我们既可以使用class也可以使用static,他们是相同的。

class MyClass  {

class func foo(){}

static func bar(){}

}


在swift1.2之前 protocol使用的是class但是这确实是不合理的,swif1.2和2.0分两次对此进行了改进,现在只需要记住,在任何时候使用static都是没问题的。

相关文章

  • swift 中 Class 和 Static 的区别

    Class 和 Static 都表示的是类方法。 无须初始化,Class 和 Static 的区别是 Class ...

  • class和static

    相同点:都可以修饰func ,static 修饰的方法叫做静态方法,class修饰的叫做类方法都可以修饰计算属性 ...

  • static 和 class

    在swift中 static和class都是用来表示”类型范围作用域“,但是在oc中并不会特别区分,而在swift...

  • static 和 class

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

  • static 和 class

    介绍 Swift中表示 “类型范围作用域” 这一概念有两个不同的关键字,它们分别是static和class。这两个...

  • Swift 中的 static 和 class 关键字

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

  • swift static和class的区别

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

  • swift3.0 中class和static

    class 和 static 相同点 1.可以修饰方法,static 修饰的方法叫做静态方法,class修饰的叫做...

  • swift - 小专题 - class和static 关键字区别

    class 和 static 相同点1.可以修饰方法,static 修饰的方法叫做静态方法,class修饰的叫做类...

  • Swift - 类型范围作用域(Class和Static)

    static�枚举和结构体用static表示静态方法。也能用于类中,但不可被子类重写 class类使用class表...

网友评论

  • 0a22134b3d54:在一个类中
    let str = "string"

    static let str = "string"
    有什么不同?

本文标题:static 和 class

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