gpt4 book ai didi

swift - 在 Swift 中,单例和类的静态版本有什么区别?

转载 作者:行者123 更新时间:2023-11-30 12:48:12 28 4
gpt4 key购买 nike

我已经有一段时间没有使用单例了,因为我从静态类中获得了单例的所有功能。我应该注意两者之间有什么区别吗?

单例示例:

class SomeManager {
static let sharedInstance = SomeManager()
var user: User!
init(user: User) {
self.user = user
}
}

使用情况:

SomeManager.sharedInstance.user

静态类示例:

class SomeManager {
static var user: User!
init(user: User) {
SomeManager.user = user
}
}

使用情况:

SomeManager.user

我知道明显的区别是,一个是将整个类设为静态,另一个是将特定部分(希望来自单个实例)声明为静态。有什么理由使用其中一种而不是另一种吗?

我现在有一个网络设置,其中有一个网络调用的单例类,可以通过类中的一堆静态方法进行访问,该类除了包含网络单例及其静态方法外什么也不做。我发现这对于我的场景有适当的范围,但尚未进行足够的研究来保证方法的质量。

示例:

class NetworkCalls {
static let network = Network()

static func getToken(completion: () -> Void) {
network.apiGetToken() {
completion()
}
}
}

使用情况:

NetworkCalls.getToken() {
print("Network Call Completed")
}

它工作得很好,所以我只是在寻找效率问题、需要考虑的事情以及此方法与替代方法之间的差异。任何提示/建议将不胜感激!

最佳答案

我可能是错的,但单例的想法是获得一个可用于所有应用程序的唯一的单个类,该类在生命周期(大多数情况下)仅初始化一次,并且主要用于在生命周期内进行状态验证您的应用程序。

静态类是更通用的类。

虽然你可以对静态类做同样的事情...

关于swift - 在 Swift 中,单例和类的静态版本有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41349285/

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