iOS如何管理ViewController的内存

时间:2019-07-01 00:21:29

标签: ios swift

如果我有三个名为VC1,VC2,VC3的ViewController。而且在每个ViewController中,都有很多ImageViews

如果我使用pushViewController方法像这样导航这些ViewController:

VC1 -> VC2 -> VC3

那么会释放在VC1中分配的图像的内存吗? 如果不是,在导航以节省内存时是否需要在VC1中释放并加载图像?

2 个答案:

答案 0 :(得分:3)

使用仪器确定您实际上有内存问题。如果是这样,那么可以,当您离开视图控制器时,可以尝试将图像设置为nil。但是首先您应该问自己为什么您遇到内存问题。一个常见的错误是使用大图像显示在较小的UIImageView中。永远不要那样做。始终调整图像大小,使其不超过显示所需的大小。如果这样做,您不太可能会遇到任何内存压力。

答案 1 :(得分:2)

如果使用navigationController?.pushViewController()函数,则所有视图控制器都将由navigationController保留。它具有属性viewControllers,您可以在其中找到所有视图控制器。因此,您必须自己进行内存管理。您可以在视图控制器的viewWillDisappear()函数中从图像视图中删除图像,然后在viewWillAppear函数中再次分配它们。