一尘不染

什么时候在Swift中使用静态常量和变量?

swift

有一些关于如何为Swift 编写代码static constant以及如何static variable在Swift中编写代码的文章。但尚不清楚何时使用static constantstatic variable而不是constantvariable。有人可以解释吗?


阅读 399

收藏
2020-07-07

共1个答案

一尘不染

当您在类(或结构)中定义静态var / let时,该信息将在所有实例(或值)之间共享。

分享信息

class Animal {
    static var nums = 0

    init() {
        Animal.nums += 1
    }
}

let dog = Animal()
Animal.nums // 1
let cat = Animal()
Animal.nums // 2

如您在这里看到的,我创建了2个单独的实例,Animal但是它们确实共享相同的静态变量nums

辛格尔顿

通常使用静态常数来采用Singleton模式。在这种情况下,我们希望分配的类实例不超过1个。为此,我们将对共享实例的引用保存在常量中,并隐藏初始化器。

class Singleton {
    static let sharedInstance = Singleton()

    private init() { }

    func doSomething() { }
}

现在,当我们需要Singleton实例时,我们编写

Singleton.sharedInstance.doSomething()
Singleton.sharedInstance.doSomething()
Singleton.sharedInstance.doSomething()

这种方法的确允许我们始终使用相同的实例,即使在应用程序的不同点也是如此。

2020-07-07