2011-02-16 15 views
1

我已經創建了一個小遊戲,當用戶在移動時觸摸屏幕時,會加載圖像。它取決於屏幕位置立即加載不同的圖像。 從來就得到了一個的UIImageView因爲內的「touchesMoved」功能,i'm加載不同的圖像是這樣的:正確加載UIImages? 「泄漏」的內存管理

imageView.image = [UIImage imageNamed: [photos objectAtIndex: newImage ] ] ; 

現在我想使用儀器與「分配」 &提高我的內存管理「內存監控」。這裏我要用「Mark Heap」點設置不同的快照並尋找泄漏點。上面的行突出顯示,現在我想知道它有什麼問題..我如何改善圖像加載(沒有緩存)?

回答

0

首先:imageNamed:緩存圖像。 如果您收到這條線高亮那麼有2個可能的原因(或兩者):

  1. 你沒有正確釋放的ImageView
  2. 你沒有正確釋放照片陣列
0

+imageNamed返回一個自動釋放對象,但UIImageView中的@property image通過它的使用保留它直到被覆蓋。 -objectAtIndex:必須返回保留計數爲1的對象,該對象不會被釋放。

如果確實有問題,則解決方法是

imageView.image = [UIImage imageNamed: [[photos objectAtIndex: newImage ] autorelease]]; 

不過我懷疑這是真正的問題在這裏。

+0

不好的解決方案。你必須找到泄漏的真正原因,不要這樣修復它。 – Max 2011-02-17 00:26:24