IOS UIController层次结构和内存使用

Ala*_*per 3 iphone uiviewcontroller ios

有关于IOS控制器的一般问题:

在启动ios创建默认UI视图控制器,然后我可以调用presentViewController或使用Segue打开其他人

问题是先前的控制器是否还在内存中?

例如,这里是链:A-> B-> C-> D-> B-> C ......等等,转变B-> C-> D-> B处于循环中.

它会创建每个控制器的新实例并保留每个副本吗?它会重复使用吗?

谢谢

Tom*_*voy 6

是的,如果你正在进行模态segues和presentViewController调用,ViewControllers仍然存在.您应该调用[self dismissViewControllerAnimated:YES completion:nil];并解除堆栈以返回到您已经创建的viewController,而不是将您已经创建过的这些viewControllers的新实例转换为新的实例.

您可以使用以下presentingViewController属性:

[[[self presentingViewController]presentingViewController]dismissViewControllerAnimated:YES completion:nil]...etc 
Run Code Online (Sandbox Code Playgroud)

要么

[self.navigationController popToRootViewControllerAnimated:YES]; (如果你使用的是导航VC)

为了快速解散几个viewControllers. viewDidLoad将不会再次调用,但您可以刷新viewController内部viewWillAppearviewDidAppear.