ViewController 被解雇后是否从内存中卸载?

kod*_*r16 0 ios swift

我注意到变量的状态不会在视图控制器的不同表示中保留。

    var starrySky = StarrySky() // this has a state property which is false initially
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        if starrySky.state == false { starrySky.createSky(for: self.view) }
        if starrySky.state != false { starrySky.resumeSkyAnimations()} // this never runs

    }
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        starrySky.state = true // here im changing the state
        starrySky.removeSkyAnimations()
    }
Run Code Online (Sandbox Code Playgroud)

所以每当我关闭这个 ViewController 并再次呈现它时,我starrySky.state总是错误的。我在相同的方法中使用相同的代码,rootViewController每当我更改视图时,状态都会保留。

  • 那么这是否意味着任何以模态呈现的 VC 在您调用之后都会从内存中消失dismiss(animated:,completion:)

mat*_*att 5

那么这是否意味着在您调用dismiss后,任何以模态呈现的VC都会从内存中消失

通常,是的。视图控制器形成父/演示者和子/呈现的层次结构或链。前者拥有并保留后者,并在后者被移除时释放。除非您有意更换根控制器,否则永远不会删除它。