首页 > 解决方案 > Swift 中静态变量的生命周期是多久?

问题描述

背景

我有以下两个类ViewControllerAViewControllerB.

class ViewControllerA: UIViewController
{
    ...
}

对于定义ViewControllerB我们也有一个静态变量。

class ViewControllerB: UIViewController
{
    static var hasSeenTheLightOfDay: Bool = false
    ...
    func viewDidLoad()
    {
        ViewControllerB.hasSeenTheLightOfDay = true
    }
}

现在假设我的 iOS 应用程序以下列方式运行:

User Taps App -> UINavigationController -> ViewControllerA -> ViewControllerB ->
                                                                               |
                                                                         User Goes Back
                                                                               |
                                           ViewControllerA <--------------------

就问题而言,ViewControllerA不包含对 的任何引用ViewControllerB

问题

有人可以引导我完成静态变量的整个生命周期hasSeenTheLightOfDay吗?

  1. 它什么时候出现?

  2. 它什么时候不存在了?

  3. 它是否保留了价值true?还是false?还是它会翻转?如果ViewControllerB从 连续多次膨胀/退出ViewControllerA

标签: iosswift

解决方案


您询问:

  1. 它什么时候出现?

当你第一次引用它时。

  1. 它什么时候不存在了?

它没有。

  1. 它是否保留值 true?还是假的?还是它会翻转?如果 ViewControllerB 从 ViewControllerA 连续多次膨胀/退出。

它保留您设置的值。它不会触发。


Swift 编程语言:属性说:

存储的类型属性在第一次访问时被延迟初始化。它们保证只被初始化一次,即使被多个线程同时访问,它们也不需要用lazy修饰符标记。


推荐阅读