在内存中一次加载一个视图控制器

Posted

技术标签:

【中文标题】在内存中一次加载一个视图控制器【英文标题】:Load One viewController at a time in memory 【发布时间】:2016-11-21 06:38:31 【问题描述】:

我在我的应用程序中使用了一个与 UIPageController 相关的第三方。我在我的应用程序中显示类别,并且我使用相同的类来显示数据。例如,如果我显示 5 个类别,则该 viewController 的 5 个对象被创建,5 个对象在内存中。

有没有办法在内存中一次只加载一个viewController?

【问题讨论】:

考虑使用 UICollectionView 作为 UIPageViewController 的替代品,UIPageViewController 会加载一个很重的 ViewController,而且大多数时候不需要通过加载 Cell,您无论如何都会获得默认优化的好处,而且它也很轻:) 并且在任何时间点都只会加载一个单元格,并在每次滑动时重新使用 :) 【参考方案1】:

我可以理解您希望通过实现此目的来减少内存使用量。

UIPageController 在初始化时加载所有页面(控制器)。如果你想这样做,你有两个选择。

自定义UIPageController 使用iCarousel控制。

iCarousel 将允许您在运行时创建页面,因此您可以一次加载一个viewController。只需很少的自定义,您就可以实现所需的输出,但绝对不需要页面控制点。

【讨论】:

以上是关于在内存中一次加载一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

视图控制器仅在第一次正确加载图像

加载一个视图控制器,然后从内存中删除前一个

为啥我的 TabBar 按钮在我第一次加载视图控制器时被禁用?

有没有办法在 Swift 中一次将委托分配给同一类的多个对象?

如何防止多个子视图控制器一次加载?

iOS:相机在第一次加载视图控制器时无法识别二维码