2016-12-13 41 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倍?我假設如果超過緩存限制,它只會驅逐舊的圖像,對吧? –