gpt4 book ai didi

swift - 全局 var 与共享实例 swift

转载 作者:行者123 更新时间:2023-11-30 11:09:32 24 4
gpt4 key购买 nike

Swift 中的全局变量和共享实例有什么区别?它们各自的使用领域是什么?谁能根据 Swift 澄清他们的概念。

最佳答案

全局变量是在文件顶层声明的变量。因此,如果我们有一个名为 Bar 的类,您可以将对 Bar 实例的引用存储在全局变量中,如下所示:

var bar = Bar()

然后您就可以从任何地方访问该实例,如下所示:

bar
bar.foo()

共享实例或单例如下所示:

class Bar {
static var shared = Bar()
private init() {}
func foo() {}
}

然后您仍然可以从模块中的任何位置访问共享实例,如下所示:

Bar.shared
Bar.shared.foo()

但是,两者之间最重要的区别之一(除了通常不鼓励使用全局变量这一事实之外)是单例模式限制您创建 Bar 的其他实例。在第一个示例中,您可以创建更多全局变量:

var bar2 = Bar()
var bar3 = Bar()

但是,使用单例(共享实例),初始化程序是私有(private)的,因此尝试执行此操作...

var baaar = Bar()

...结果如下:

'Bar' initializer is inaccessible due to 'private' protection level

这是一件好事,因为单例的要点是有一个单个共享实例。现在,访问 Bar 实例的唯一方法是通过 Bar.shared。重要的是要记住在类中添加 private init(),但不要添加任何其他初始化程序,否则将不再强制执行。

如果您想了解更多相关信息,请阅读 KrakenDev 撰写的一篇精彩文章 here .

关于swift - 全局 var 与共享实例 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52316412/

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