我正在使用其中一个"汉堡菜单"建立一个iOS应用程序。类型抽屉打开左边的选项列表。像这样:
每次点击某个项目时,例如"设置"它加载一个新的viewcontroller并将其显示在主视图控制器上。现在,我想知道的问题是,每次点击菜单中的新项目时,我是否应该释放视图控制器。
例如:
我希望将所有视图控制器保留在内存中,因为我认为如果先前已分配它,它将提供从一个到另一个的更平滑过渡,而不是每次都必须等待分配它。
我正在使用ARC
这是不好的做法吗?我可能在内存中有6-7个viewcontrollers。
答案 0 :(得分:2)
看看SDK,Apple做出了两个选择:UINavigationController
使整个VC的堆栈低于顶部,而UIPageViewController
积极地释放除当前页面之外的任何页面。
这是一个"速度/空间"贸易。预计算和缓存对象将更快(一旦运行)但占用更多内存。更积极地释放和构建(或重建)将产生一些运行时间成本,但占用更少的内存。
问题也可能是过早或不必要的优化示例。对于少数典型的VC,分配很快,并且内存占用量(应该)很小。改变方法可能对速度或空间产生微不足道的影响。
我从最简单的方式开始(可能允许VC被动释放更简单)并查看是否存在需要解决的可证明问题。
答案 1 :(得分:1)
如果你考虑你正在做什么,它与UITabBarController没什么不同。这些观点在第一次观看之前不会加载,但随后会被保留并且#34;活着"无限期。我认为只要你保持加载的视图控制器的数量合理(单个数字)你可能会很好,但有一点需要注意,如果他们都在做一些密集的处理/加载/等等,它可能会变成有问题的。
答案 2 :(得分:0)
我不一定认为将所有ViewControllers保留在内存中是件好事,除非View包含需要很长时间才能获取的对象(即打开UIDocument或NSURLRequest)。
希望有所帮助!