使用 UINavigationController 循环 UIViewController 时内存使用量增加的问题

Issue with increase memory usage when looping UIViewControllers using UINavigationController

我正在尝试遍历多个 UIViewController:其中第一个(开始)视图是一个菜单,最终视图用作结果页面,在单击我的栏按钮后循环回到开始视图 "Finish".

使用情节提要进行测试,我当然使用 push segue 来浏览视图,但随后使用带有 "Finish" 按钮的模态 segue 将我带回起始视图控制器,其中嵌入了导航控制器。这使我无法使用后退按钮越过起始视图并撤消过去的循环。这是一件好事(我花了一些时间才弄清楚),因为我不想循环回到一个循环的起始视图。

我设计的问题是我的内存使用量不断增加,我不知道如何 deallocate/free 以前循环的视图。我计划在这个应用程序中使用数组、图像、tableView,所以我真的需要一些指导来了解如何在按下 "Finish" 按钮并且应用程序转到开始菜单视图后释放这些大量内存。

我正在使用 Xcode 版本 5.1.1。模拟 iPhone 3.5 英寸。

谢谢

你说:

... but then employ a modal segue with the "Finish" button

您不想使用完成按钮进行模式转场(因为这会将所有旧视图控制器保留在内存中并实例化第一个场景的新副本)。如果您不关闭所有这些旧的视图控制器,您将最终 "abandoning" 与这些场景相关的内存。

相反,您想使用展开转场。这 returns 到特定的视图控制器,消除任何干预场景(如果有的话),并释放与它们和它们的视图控制器关联的内存。

在您的第一个视图控制器中,创建一个展开操作:

- (IBAction)unwindToFirstScene:(UIStoryboardSegue *)segue {
    // this is intentionally blank
}

在第一个视图控制器中创建它("finish" 按钮的目标)后,在最后一个视图控制器中的 "finish" 按钮与出口出口之间创建一个 segue:

执行此操作时,系统会提示您执行展开操作。