[英]static vs class as class variable/method (Swift)
我知道static
关键字用于在struct
, enum
等中声明类型变量/方法。
但是今天我发现它也可以用在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.