如何为非常长的UIViewControllers导航堆栈优化内存

时间:2019-06-04 06:27:07

标签: ios memory uinavigationcontroller

我的应用程序中有一些场景,由于我推送的UIViewControllers的数量,导航堆栈变得很长。我在我的应用程序中构建了类似于文件浏览器UI的内容,并且有很多UIViewControllers将被推入导航堆栈中的可能性。对于非常深的导航堆栈,我会遇到内存警告。

在应用中,我们只需显示当前UIViewController的所有先前UIViewConrollers都在内存中。我们可以优化它并添加某种虚拟化来改善内存占用吗?

1 个答案:

答案 0 :(得分:0)

据我了解,每个文件夹都有UIViewController

如果只保留最后三个控制器,我认为没有问题。在每个viewWillApear的{​​{1}}中,您需要检查较旧的视图控制器并删除一些视图控制器

也许在UIViewController

中是这样的
viewWillAppear

请确保您可以充分利用View Controller中的内容,并在if (navigationController?.viewControllers.count)! > 3 { navigationController?.viewControllers.removeFirst() } else if (navigationController?.viewControllers.count)! < 2 { if true { let olderPage = UIViewController() navigationController?.viewControllers.insert(olderPage, at: 0) } } 中进行尽可能多的初始化,并在viewWillApear中进行尽可能多的释放。请注意,如果您使用viewWillDisapear加载图像,则图像将被缓存,并且它们不会释放内存。