2016-12-13 55 views
2

因此,在我的应用程序中,我有一堆使用UICollectionView作为主要结构的视图控制器。这些包含由图像和一些覆盖文本组成的单元格,并且在整个导航应用程序的过程中会创建这些单元格的数量可能会很多(可能为数百甚至更多,这是一个巨大的内容目录)。我已经找到了使光栅化:何时为UICollectionViewCell栅格化分配的内存被释放?

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

大幅加速性能,使帧率从大约31fps去〜58fps,但是,正如所料,该应用的内存稳步增加。

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

回答

2

enter image description here如果未使用100ms,缓存层将被删除。

下面是WWDC 2014

  • 重要的票据图像的GPU合成
  • 缓存大小是有限的屏幕尺寸的2.5倍

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

+0

感谢快速反应!你知道他们的意思吗?“缓存大小限制为屏幕大小的2.5倍”?这是否意味着所有缓存图像的组合区域只能是屏幕区域的2.5倍?我假设如果超过缓存限制,它只会驱逐旧的图像,对吧? –