0

我有一个带有导航控制器的选项卡式应用程序,其中包含选项卡和视图控制器。当我按下某个标签项并深入视图控制器层次结构(由导航控制器维护)时,当我直接按Tab标签项时会发生什么?恕我直言,所有的视图控制器在内存堆栈中,如果我开始从第一个视图控制器深入再次导航,然后我将视图控制器的副本放在导航堆栈上。我应该如何做适当的内存管理?恕我直言,我需要释放(弹出)屏幕上的所有视图控制器(除第一个)当用户点击一些标签项目。如何实现这一目标?选项卡式应用程序+导航控制器:如何在按下选项卡时释放堆叠的UIViewControllers?

回答

2

系统会照顾卸载联合国需要意见时,它需要的内存(并重新加载它们在需要时),因此,如果您正确实施的viewDidUnloadreceivedMemoryWarning方法,你应该罚款。视图控制器本身几乎不占用任何内存(除非你自己分配了大量的东西)。在任何情况下,它们都不会在堆栈上分配,因为它们是在堆上分配的对象(通用目标c的经验法则)。当您推送视图控制器时,它将被保留,当您弹出视图控制器时,它将被释放。通常,您不会期望每个选项卡中的导航控制器都会弹出回到根目录,因为您按下了另一个选项卡,但如果您确实想要这样做,那么您可以使用popToRootViewController方法。

+0

谢谢。我只是试图阻止在导航堆栈上推送重复的视图控制器。例如,如果有5个视图控制器已经推到屏幕上,并且如果我按下标签栏并开始导航到深层,那么我是否在屏幕上推动重复的视图控制器?恕我直言,我推重复,因为现有的没有弹出。 – Centurion

相关问题