2010-03-23 56 views
3

按照UIImage documentationUIImage如何在低內存的情況下工作?

在低存儲器的情況下,圖像數據可以從一個UIImage對象進行沖洗以釋放內存在系統上。

有誰知道這是如何工作的?看起來,這個過程是完全透明的,並且會在後臺發生,沒有我的輸入,但我無法以任何方式找到任何明確的文檔。

其次,這個數據清除發生在圖像沒有被我加載時? (我從UIImagePicker獲得圖像)。

出現這種情況:我正在拍一張UIImagePickerController的照片,然後立即拍攝該照片並將其發送到新的UIViewController進行顯示。大約30%的時間將原始圖像發送到新的控制器,並在內存警告中崩潰了我的應用程序。調整圖像大小需要一些時間,如果有第三個選項可用,我寧願不花費時間。

回答

3

我認爲這是答案。在initWithContentsOfFile:的文檔中,它表示:

該方法將圖像數據加載到內存中並將其標記爲可清除。如果數據已清除並需要重新加載,則圖像對象將從指定的路徑再次加載該數據。

UIImage中的其他方法都沒有提到清除,所以看起來從文件初始化新圖像是獲得這種低內存行爲的唯一方法。

0

在回答你的第二個問題:它保存到一個文件,然後使用:

[NSData dataWithContentsOfMappedFile:] 

做大小調整。儘管使用文件作爲中間件,但速度相當慢。

相關問題