2012-07-11 26 views
0

嗨創造每一個我有我創建各種相似圖片釋放圖像不使用init

UIImage *image = [UIImage imageNamed:_imageName]; 

下一個問題,我指定給一個UIImageView的

[self.imgvImage setImage:image]; 

用戶時點擊一個按鈕一個UIImageView被創建並且一個UIImage被分配,當創建新的時候創建了4個UIImageViews最後一個被移除發送發佈到UIImageView像這樣

[_imgvImage release]; 

但各地超過100次創建和釋放一個內存交戰發生,但應用程序不崩潰,我認爲這是因爲創建UIImages沒有釋放,有這麼多,因爲所有的代碼是乾淨的,創建和釋放無一不精。

如何從內存中完全刪除所有的UIImageView與他的UIImage。

請幫幫忙,對不起我的英語不好。用下面的語句是由iOS的處理

回答

1

的形象創造。此圖像存儲在緩存中,以便下次調用時只需從緩存中返回即可。

UIImage *image = [UIImage imageNamed:_imageName]; 

我覺得你不應該擔心內存不足的警告,只要你釋放你的分配(在這種情況下的UIImageView)。內存緊縮時,iOS應清除此緩存。

如果您不希望緩存(例如,當你加載一個圖像僅一次),你可以使用imageWithContentsOfFile:UIImage的方法。

+1

感謝@MSK正是我不想緩存這個圖像我gona嘗試imageWithContentsOfFile,我會告訴你! – NTTake 2012-07-11 15:03:38

+0

並接受的答案,如果它是有幫助的 – msk 2012-07-11 15:05:01

+0

傻冒的答案是好的,但不是我,因爲我有一類什麼樣找到的圖片如果不存在從互聯網上下載的,但圖像是建立在圖像是在類seted誰我提出請求,並給出的圖像是一個圖像自動釋放內存泄漏感謝無論如何。 – NTTake 2012-07-11 15:14:54

-2

您好我找到了解決辦法的解決辦法是撥打

NSAutoreleasePool 

的方法,當我刪除的看法是這樣的對象:

for(ProductVW *pVW in [_vwProductsContainer subviews]){ 

      NSAutoreleasePool * autoreleasePool = [[NSAutoreleasePool alloc] init]; 

      [pVW removeFromSuperview]; 

      [autoreleasePool release]; 

} 
+0

這不是一個好的解決方案。你的問題無疑取決於你如何創建你的圖像(我希望它們是用'autorelease'創建的,或者在將它們添加到視圖後立即顯式發佈'release')以及你的'@ property'是如何爲圖像視圖聲明的。如果您分享您的變量聲明以及用於創建和刪除圖像視圖的代碼,解決方案將非常簡單。但是如果沒有更完整的代碼示例,我們不能提供建議。 – Rob 2012-07-11 19:15:31

+0

嗨@RobertRyan感謝您的迴應,但我現在不爲什麼我有一個類(FindImage.h/.m)誰給我的UIImage,在其他類像(產品。h/m)當我創建一個產品時,我在FindImage中請求圖像,並且請求給我一個像這樣的UIIMage:'UIImage * image = nil; image = [UIImage imageNamed:_imageName]; [_delegate FindImageFoundImage:image];'並且在產品中當圖像被接收時,像這樣'UIImageView * imgVW = [[UIImageView alloc] initWithImage:image]; self.imgvProduct = imgVW; [imgVW release]; [self addSubview:_imgvProduct];'help – NTTake 2012-07-11 19:32:26

+0

pelease需要幫助 – NTTake 2012-07-11 19:32:45