2014-01-17 148 views
0

我正試圖優化包含大量圖像和代碼的iOS應用程序。我用一些程序減少了圖像的大小,但使用儀器顯示應用程序仍在使用70-90mb的高速緩存。 我已經讀過,根據需求加載資源(圖片),當不再需要時丟棄它們將是一個很好的解決方案。我該怎麼做?我也有一個問題: 當我們使用: UIImage * aux = [UIImage imagenamed:@「image.png」];
和我們寫完aux = nil後; 圖像從緩存中被丟棄?iOS - 優化。緩存圖像

+1

你可能想說明自己的應用做什麼,它是如何使用的圖像,有多少是可見在任何一個時間,你當前如何加載它們... – Wain

回答

0

這些圖像中只有一些是可見的嗎?編寫一個僅加載當前可見圖像的系統(也許有些應用程序認爲可能很快會顯示)。當您從系統中收到內存警告時,請查找您在過去加載的一些圖像,並且暫時不可見並釋放它們。

要回答第二個問題,是的,如果您使用的是ARC(自動引用計數),並且設置爲nil的引用是該對象的唯一引用,那麼設置對nil的引用將釋放它。所有對象的引用必須在釋放前消失。

我會看看一些可用的解決方案,例如Path的FastImageCache,看看他們是否滿足您的需求。 FastImageCache以類似於Sprite Sheets(2D遊戲使用)的格式將未壓縮的圖像存儲在磁盤上,以便在需要時快速加載它們。這裏的重點是提高滾動性能,所以如果這對你來說不是問題,這可能不是適合工作的正確工具。

你也可以看看this thread,雖然這是爲了緩存網絡圖像。

您還可以看看The Tumblr Image Cache