我有一個將圖像作爲NSData
存儲在Core Data中的應用程序。釋放使用imageWithData創建的UIImage
我需要時使用imageView.image = [UIImage imageWithData:<...>]
在我的視圖中加載這些圖像。當我離開視圖時,爲該UIImage
分配的內存不會被釋放。
我正在使用ARC,並將我的圖像視圖設置爲無我的viewDidUnload:
方法。
我還能做些什麼嗎?
我有一個將圖像作爲NSData
存儲在Core Data中的應用程序。釋放使用imageWithData創建的UIImage
我需要時使用imageView.image = [UIImage imageWithData:<...>]
在我的視圖中加載這些圖像。當我離開視圖時,爲該UIImage
分配的內存不會被釋放。
我正在使用ARC,並將我的圖像視圖設置爲無我的viewDidUnload:
方法。
我還能做些什麼嗎?
不要指望數據一離開視圖就會被釋放。當你使用ARC時,這不是你的責任。所有這些對象可能會進入一些自動釋放池,當iOS決定或需要時,這些池會被耗盡。
但是,每當我重新進入視圖的圖像視圖得到初始化再次,因爲'imageWithData'沒有緩存我重複進入視圖的內存兩次,三次等相同的圖像(S)。我應該爲'imageWithData'實現內存緩存嗎? –
只要沒有它,你就可以進行緩存。我確定每個圖像都有一個名稱屬性,所以最簡單的方法是創建一個NSMutableDictionary,其中包含key和UIImage的對象或更好的NSCache對象...然後僅從緩存對象中獲取圖像,如果它們不存在添加他們在... – graver
你是什麼意思的「當我離開視圖」?視圖控制器是否被釋放? –
我的意思是我從導航控制器中彈出它。 –
你是說,你想從視圖中刪除圖像?使用[imageView removeFromSuperview]; – mientus