Ios ViewController在被解除后是否从内存中卸载?

Ios ViewController在被解除后是否从内存中卸载?,ios,swift,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 { star

我注意到变量的状态在视图控制器的不同表示形式中并不保持不变

    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()
    }
因此,每当我关闭此ViewController并再次显示它时,我的
starrySky.state
总是错误的。我在我的
rootViewController
中的相同方法中有相同的代码,并且每当我更改视图时,状态保持不变

  • 那么这是否意味着任何风投都会被解雇 调用后的内存
    解除(动画:,完成:)

因为当您再次显示视图时,变量starrySky再次初始化为false 您可以在ViewWillEnglish中使用userDefaults保存状态,并在ViewWillEnglishe中读取状态

那么,这是否意味着在您调用Disclease之后,任何以模式呈现的VC都会被从内存中删除


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

是否每次显示viewcontroller对象时都要创建它?如果能看到viewcontroller的创建和演示代码,那就太好了。而且,是的,任何被拒绝的VC都会从内存中删除,除非它在某处有引用,或者被保留。不,我只是通过prepare for segueOh演示VC。好的,我认为只有当应用程序获得backgroundedNo,backgrounding对视图控制器层次结构没有影响。如果确实如此,则当您再次前景化时,视图控制器将丢失。如果发生这种情况,你会遇到更大的问题。同样地,
视图将出现/消失
与背景无关。