我有以下两个课程ViewControllerA和ViewControllerB。
class ViewControllerA: UIViewController
{
...
}
Run Code Online (Sandbox Code Playgroud)
对于 的定义,ViewControllerB我们还有一个静态变量。
class ViewControllerB: UIViewController
{
static var hasSeenTheLightOfDay: Bool = false
...
func viewDidLoad()
{
ViewControllerB.hasSeenTheLightOfDay = true
}
}
Run Code Online (Sandbox Code Playgroud)
现在假设我的 iOS 应用程序以以下方式运行:
User Taps App -> UINavigationController -> ViewControllerA -> ViewControllerB ->
|
User Goes Back
|
ViewControllerA <--------------------
Run Code Online (Sandbox Code Playgroud)
就问题而言,ViewControllerA不包含任何对 的引用ViewControllerB。
有人可以带我了解静态变量的整个生命周期吗hasSeenTheLightOfDay?
它什么时候出现?
它什么时候消失?
它还能保值吗true?或者false?或者它会翻转吗?如果ViewControllerB从 连续多次膨胀/退出ViewControllerA。
你问:
\n\n\n\n
\n- 它什么时候出现?
\n
当你第一次引用它时。
\n\n\n\n
\n- 它什么时候消失?
\n
它没有\xe2\x80\x99t。
\n\n\n\n
\n- 它保留真实值吗?还是假的?或者它会翻转吗?如果 ViewControllerB 从 ViewControllerA 连续多次膨胀/退出。
\n
它会保留您设置的值。它不会翻转。
\n\n\n存储的类型属性在首次访问时延迟初始化。它们\xe2\x80\x99保证只被初始化一次,即使被多个线程同时访问,并且它们\xe2\x80\x99不需要用修饰符标记
\nlazy。