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
中的相同方法中有相同的代码,并且每当我更改视图时,状态保持不变
- 那么这是否意味着任何风投都会被解雇
调用后的内存
解除(动画:,完成:)
通常是的。视图控制器形成父/演示者和子/演示者的层次结构或链。前者拥有并保留后者,并在后者被移除时将其释放。除非您有意更换根控制器,否则永远不会删除它 是否每次显示viewcontroller对象时都要创建它?如果能看到viewcontroller的创建和演示代码,那就太好了。而且,是的,任何被拒绝的VC都会从内存中删除,除非它在某处有引用,或者被保留。不,我只是通过prepare for segueOh演示VC。好的,我认为只有当应用程序获得backgroundedNo,backgrounding对视图控制器层次结构没有影响。如果确实如此,则当您再次前景化时,视图控制器将丢失。如果发生这种情况,你会遇到更大的问题。同样地,
视图将出现/消失
与背景无关。