我的应用程序中有一些场景,由于我推送的UIViewControllers
的数量,导航堆栈变得很长。我在我的应用程序中构建了类似于文件浏览器UI的内容,并且有很多UIViewControllers
将被推入导航堆栈中的可能性。对于非常深的导航堆栈,我会遇到内存警告。
在应用中,我们只需显示当前UIViewController
的所有先前UIViewConrollers
都在内存中。我们可以优化它并添加某种虚拟化来改善内存占用吗?
答案 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
加载图像,则图像将被缓存,并且它们不会释放内存。