gpt4 book ai didi

swift - 为什么不在 Swift 中直接使用静态变量?

转载 作者:搜寻专家 更新时间:2023-11-01 07:13:59 24 4
gpt4 key购买 nike

我在 Mozilla Firefox for iOS 存储库中找到了它。

static let WebServerSharedInstance = WebServer()

class var sharedInstance: WebServer {
return WebServerSharedInstance
}

当您可以像这样在一行中执行相同的操作时,为什么要创建一个只返回相同变量的新变量?

static let sharedInstance = WebServer()

最佳答案

我查看了代码,我认为我误解了上下文:

class WebServer {
static let WebServerSharedInstance = WebServer()

class var sharedInstance: WebServer {
return WebServerSharedInstance
}
}

虽然您始终可以使用 WebServer.WebServerSharedInstance 来访问单例,但是 WebServer 的子类可以覆盖 sharedInstance

class MyServer : WebServer {
override class var sharedInstance: MyServer {
return MyServer()
}
}

但是,我没有在代码中找到这样做的示例,因此下面的原始答案可能是正确的。

原答案:

你是对的。绝对没有理由这样做。

这可能是直接从 Objective-C 翻译过来的,它对单例使用类似的语法。

此外,对于 Swift 1.0,我们不太确定如何创建单例以及类上的 static let 是否线程安全。

关于swift - 为什么不在 Swift 中直接使用静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43291142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com