当前位置: 首页 > 面试题库 >

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

颛孙喜
2023-03-14
问题内容

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


问题答案:

当您在类(或结构)中定义静态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()

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



 类似资料:
  • 我想问一个问题,什么时候在Java中使用静态变量/方法或实例变量/方法更有利? 我知道这取决于特定的情况(比如将util类编程为静态方法),但是我们能声明一些像通用策略一样的东西吗?

  • 问题内容: 在Swift中,我看到一些类似的方法: 我想知道何时使用@objc?我读了一些文档,但他们说要在Objective-C中调用它时,应添加@objc标志 但是,这是Swift中的私有函数,@ obj的作用是什么? 问题答案: private表示仅在Swift中可见。因此使用@objc在Objective-C中可见。如果您有功能可以快速选择私有功能,则需要此功能。 @objc属性使您的Sw

  • 问题内容: 在什么情况下,您将使用字段变量而不是局部变量?我发现很难决定何时在类中的2个或更多方法中使用变量。我倾向于使用局部变量,并将它们传递给另一种方法。 谢谢, 莎拉 问题答案: 用面向对象的术语来说,变量作为对象的属性有意义吗?如果是这样,则应将其设为字段变量。如果没有,它可以任意选择。 记住单一责任原则-设计良好的班级应该只承担1个责任,因此只有1个改变的理由。

  • 问题内容: 什么时候使用是个好主意? 我有时会在PHP的代码示例中看到这一点。这样可以处理DOS / Mac / Unix终端问题吗? 问题答案: 是的,表面上用来以跨平台兼容的方式查找换行符,因此它可以处理DOS / Unix问题。 请注意,PHP_EOL表示 _当前_系统的结束符。例如,在类似Unix的系统上执行时,它将找不到Windows终端行。

  • 问题内容: 何时加载静态变量,运行时或编译时?有人可以解释一下吗? 我非常感谢您的帮助。 谢谢。 问题答案: 它们在运行时加载。 静态表示:该变量属于该类,而不属于该类的实例。因此,每个静态变量只有一个值,如果您有该类的n个实例,则没有n个值。

  • 本文向大家介绍请你回答一下静态变量什么时候初始化相关面试题,主要包含被问及请你回答一下静态变量什么时候初始化时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 静态变量存储在虚拟地址空间的数据段和bss段,C语言中其在代码执行之前初始化,属于编译期初始化。而C++中由于引入对象,对象生成必须调用构造函数,因此C++规定全局或局部静态对象当且仅当对象首次用到时进行构造