我的原始堆栈是
UINavigationController -> UIViewController (push) -> TabBar (modal)
而且我想将其更改为一个
UIViewController
由于某种原因,在设置keyWindow.rootViewController = newVC
之后,我的旧堆栈被破坏了,但是又被创建了(现在位于新的VC后面),就好像它加载了一个新副本一样。这也正在泄漏内存,因为实例化了一个新副本,并且在我们不需要它时仍再次调用viewDidLoad
。
为什么当我已经将rootViewController更改为一个全新的版本时,为什么要变得既聪明又呈现呢?
更新:流程更清晰
启动:
创建
UINavigationController -> UIViewController (push) -> TabBar (modal)
触发“重新加载”,即window.rootViewController = nil
:
创建
TabBar (modal)
**
“重新加载”的下一个,即window.rootViewController = UIViewController()
:
deinit启动的
UINavigationController -> UIViewController (push) -> TabBar (modal)
显示UIViewController
由于上述奇怪的行为,我的堆栈是这样的:这是触摸rootViewController之前的堆栈:
注意:
**我想知道的是为什么为什么only被调用?其余的不是。无论哪种方式,为什么这里的视图控制器都不会被破坏?
谢谢