什么时候释放为 UICollectionViewCell 光栅化分配的内存?

When is the memory allocated for UICollectionViewCell rasterizations freed?

所以,在我的应用程序中,我有一堆使用 UICollectionView 作为主要结构的视图控制器。这些包含由图像和一些覆盖文本组成的单元格,并且在整个应用程序导航过程中可能会创建大量这些单元格(数百甚至可能超过 1000 个。这是一个巨大的内容目录)。我找到了启用光栅化:

cell.layer.shouldRasterize = true
cell.layer.rasterizationScale = UIScreen.mainScreen().scale

显着 提高了性能,使帧速率从 ~31fps 到 ~58fps,但是,正如预期的那样,应用程序的内存稳步增加。

所以我的问题是什么时候删除这些缓存的光栅化图像?是否只有当应用程序停止时?或者是当包含它们的视图被取消时?如果是前者,有没有办法手动强制删除它们?

如果 100 毫秒未使用,缓存层将被删除。

以下是 WWDC 2014 的重要说明

  • 图像在 GPU 上合成
  • 缓存大小限制为屏幕大小的 2.5 倍

http://devstreaming.apple.com/videos/wwdc/2014/419xxli6f60a6bs/419/419_advanced_graphics_and_animation_performance.pdf