如果我有三个名为VC1,VC2,VC3的ViewController。而且在每个ViewController
中,都有很多ImageViews
。
如果我使用pushViewController
方法像这样导航这些ViewController:
VC1 -> VC2 -> VC3
那么会释放在VC1中分配的图像的内存吗? 如果不是,在导航以节省内存时是否需要在VC1中释放并加载图像?
答案 0 :(得分:3)
使用仪器确定您实际上有内存问题。如果是这样,那么可以,当您离开视图控制器时,可以尝试将图像设置为nil
。但是首先您应该问自己为什么您遇到内存问题。一个常见的错误是使用大图像显示在较小的UIImageView中。永远不要那样做。始终调整图像大小,使其不超过显示所需的大小。如果这样做,您不太可能会遇到任何内存压力。
答案 1 :(得分:2)
如果使用navigationController?.pushViewController()
函数,则所有视图控制器都将由navigationController保留。它具有属性viewControllers
,您可以在其中找到所有视图控制器。因此,您必须自己进行内存管理。您可以在视图控制器的viewWillDisappear()
函数中从图像视图中删除图像,然后在viewWillAppear
函数中再次分配它们。