2012-06-15 33 views
0

我有一個將圖像作爲NSData存儲在Core Data中的應用程序。釋放使用imageWithData創建的UIImage

我需要時使用imageView.image = [UIImage imageWithData:<...>]在我的視圖中加載這些圖像。當我離開視圖時,爲該UIImage分配的內存不會被釋放。

我正在使用ARC,並將我的圖像視圖設置爲無我的viewDidUnload:方法。

我還能做些什麼嗎?

+0

你是什麼意思的「當我離開視圖」?視圖控制器是否被釋放? –

+0

我的意思是我從導航控制器中彈出它。 –

+0

你是說,你想從視圖中刪除圖像?使用[imageView removeFromSuperview]; – mientus

回答

1

不要指望數據一離開視圖就會被釋放。當你使用ARC時,這不是你的責任。所有這些對象可能會進入一些自動釋放池,當iOS決定或需要時,這些池會被耗盡。

+0

但是,每當我重新進入視圖的圖像視圖得到初始化再次,因爲'imageWithData'沒有緩存我重複進入視圖的內存兩次,三次等相同的圖像(S)。我應該爲'imageWithData'實現內存緩存嗎? –

+1

只要沒有它,你就可以進行緩存。我確定每個圖像都有一個名稱屬性,所以最簡單的方法是創建一個NSMutableDictionary,其中包含key和UIImage的對象或更好的NSCache對象...然後僅從緩存對象中獲取圖像,如果它們不存在添加他們在... – graver

相關問題