IOS UIController层次结构和内存使用

时间:2013-06-10 22:39:55

标签: iphone ios uiviewcontroller

对IOS控制器有一般性问题:

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

问题是以前的控制器是否仍在内存中?

例如,这里是链:A-> B-> C-> D-> B-> C ......等等,过渡B-> C-> D-> ; B处于循环中。

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

感谢

1 个答案:

答案 0 :(得分:6)

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

您可以使用presentingViewController属性,如:

[[[self presentingViewController]presentingViewController]dismissViewControllerAnimated:YES completion:nil]...etc 

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

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