2013-04-05 72 views
1

我有很多UIImage是我需要在一次特定操作中保留在內存中的。在NSMutableArray中保存UIImage的最佳實踐

我設法保存圖像的最佳方式是將它們轉換爲NSData並存儲在NSMutableArray中。後來我會遍歷數組,並將NSData再次轉換爲UIImage對象以重用每個圖像(我將它們全部合併爲一個單一圖塊)。

但是,如果數組中有10個或更多圖像,我的應用程序會崩潰。將它們保存到硬盤驅動器而不是NSMutableArray會爲用戶增加很多處理時間。

在飛行中處理大量圖像的最佳做法是什麼?

+4

你爲什麼需要將它們轉換爲NSData? – Tim 2013-04-05 17:52:04

+2

爲什麼所有的轉換?將UIImage存儲在數組中有什麼問題? – Justin 2013-04-05 17:52:50

+0

爲什麼不把數據路徑保存到數組中並在需要時調用數據? – 2013-04-05 17:59:03

回答

1

如果直接存儲UIImage,您會發現在崩潰之前可以在陣列中存儲更多圖像。它需要從NSData轉換爲UIImage並返回內存。

但是,您仍然有限的內存。如果這些圖像的大小可能發生變化,那麼在崩潰之前,陣列中的數字可能是未知的。如果是這種情況,可能是時候開始考慮將數據緩存到tmp文件夾。

無論如何,最好的做法是直接在數組中保存對對象的引用,而不是將它們轉換爲NSData。存儲直接引用還允許引用計數來發揮其魔力,通常需要較少的數據在內存中的複製,從而減少內存佔用並提高性能。