有一些关于如何为Swift 编写代码static constant以及如何static variable在Swift中编写代码的文章。但尚不清楚何时使用static constant和static variable而不是constant和variable。有人可以解释吗?
static constant
static variable
constant
variable
当您在类(或结构)中定义静态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。
Animal
nums
通常使用静态常数来采用Singleton模式。在这种情况下,我们希望分配的类实例不超过1个。为此,我们将对共享实例的引用保存在常量中,并隐藏初始化器。
class Singleton { static let sharedInstance = Singleton() private init() { } func doSomething() { } }
现在,当我们需要Singleton实例时,我们编写
Singleton
Singleton.sharedInstance.doSomething() Singleton.sharedInstance.doSomething() Singleton.sharedInstance.doSomething()
这种方法的确允许我们始终使用相同的实例,即使在应用程序的不同点也是如此。