2010-12-03 74 views
1

我在我的視圖控制器設置爲「分配」的UIImageView屬性。每當我點擊一個按鈕時,我都會將視圖中的圖像設置爲新的東西。由於我使用其他組件的方式,每次更改圖像然後重新添加它時,我都必須刪除FromSuperView並釋放UIImageView。這似乎沒有造成內存問題 - 當使用現有的UIImageView並且不釋放它時,內存仍然會增加(但是存在大小問題,這就是爲什麼我正在重新創建它)。UIImageView內存問題

出於某種原因,使用setImage會將應用程序的內存使用量增加約0.8mb(圖像的大小)。當我不設置圖像時,內存似乎保持相對恆定。任何想法爲什麼?

[self.pictureView setImage: img]; 
[self.pictureView setFrame: CGRectMake(0,0,[img size].width, [img size].height)]; 
[img release]; 

回答

1

我認爲你泄露了UIImageView,當你泄漏UIImageView時,你正在泄漏圖像。

這取決於你如何重新創建UIImageView。確保在將新圖像設置爲屬性之前釋放舊的圖像視圖。

可能最好將屬性設置爲保留,因爲當您設置新值以保留屬性時,它會釋放舊實例。

+0

我也試過它作爲保留,它似乎沒有幫助...我做一個removeFromSuperView並釋放之前直接顯示的代碼,然後我也重新初始化視圖像這樣︰self.pictureView = [ [UIImageView alloc] init]; – 2010-12-03 14:00:24

0

也許在設置圖像清除參考之前將UIImageView設置爲零。

pictureView.image=nil;