我知道static
关键字用于在struct
,enum
等中声明类型变量/方法。
但是今天我发现它也可以在class
实体中使用。
class foo {
static func hi() {
println("hi")
}
class func hello() {
println("hello")
}
}
static
实体中class
关键字的用途是什么?
谢谢!
编辑:我指的是Swift 1.2,如果这有什么不同
答案 0 :(得分:21)
从Xcode 3 beta 3发行说明:
现在允许在类中使用“静态”方法和属性(作为 “class final”的别名。)
所以在Swift 1.2中,hi()
定义为
class foo {
static func hi() {
println("hi")
}
}
是类型方法(即在类型本身上调用的方法) 也是 final (即不能在子类中重写)。
答案 1 :(得分:3)
在课程中,它用于完全相同的目的。但是,在Swift 1.2(目前处于测试阶段)static
不可用之前,备用class
说明符可用于声明静态方法和计算属性,但不能用于存储属性。
答案 2 :(得分:0)
在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:)
。