繁体   English   中英

static vs class as class variable / method(Swift)

[英]static vs class as class variable/method (Swift)

我知道static关键字用于在structenum等中声明类型变量/方法。

但是今天我发现它也可以用在class实体中。

class foo {
  static func hi() {
    println("hi")
  }
  class func hello() {
    println("hello")
  }
}

什么是static关键字在class实体中的使用?

谢谢!

编辑:我指的是Swift 1.2,如果这有任何区别的话

从Xcode 3 beta 3发行说明:

现在允许在类中使用“静态”方法和属性(作为“类final”的别名)。

所以在Swift 1.2中, hi()定义为

class foo {
  static func hi() {
    println("hi")
  }
}

是一种类型方法 (即在类型本身上调用的方法),它也是最终的 (即不能在子类中重写)。

在课堂上,它用于完全相同的目的。 但是,在Swift 1.2(当前处于测试阶段) static不可用之前 - 备用class说明符可用于声明静态方法和计算属性,但不能用于存储属性。

在Swift 5中,我使用type(of: self)动态访问类属性:

class NetworkManager {
    private static var _maximumActiveRequests = 4
    class var maximumActiveRequests: Int {
        return _maximumActiveRequests
    }

    func printDebugData() {
        print("Maximum network requests: \(type(of: self).maximumActiveRequests).")
    }
}

class ThrottledNetworkManager: NetworkManager {
    private static var _maximumActiveRequests = 2
    override class var maximumActiveRequests: Int {
        return _maximumActiveRequests
    }
}

ThrottledNetworkManager().printDebugData()

打印2。

在Swift 5.1中,我们应该能够使用Self ,使用大写字母S而不是type(of:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM