2010-06-17 63 views
1

我想我有一個UIImage,它的保留計數比它應該有的更高,我可能會泄漏內存。我使用這個圖像作爲縮略圖,爲uibutton設置自定義背景。所以這個烏布頓有一個參考,我也是。但不是2,retainCount是3.我是否必須創建一個自定義的UIImage派生類並覆蓋dealloc,如果我想在那裏放置一條日誌消息,然後將UIImage中使用的類更改爲我的類,或者有更簡單的方法。提前致謝。我怎麼看dealloc是否被一個uikit對象或任何非我自己創建的對象所調用

+3

你不應該跟蹤統計釋放自己,因爲系統增加和除了你自己的代碼引起的任何變化保持數中減去。由於這個原因,保留計數不能用於調試。 UIImage在幕後非常複雜,它們有一個緩存,所以它們的保留數量尤其是名義上的。相反,您應該簡單地將代碼中的每個保留與發佈進行配對。這樣做和保留計數自己照顧自己。 – TechZen 2010-06-17 13:09:36

回答

2
+0

請注意,這是非常危險和極度灰心。在同一篇文檔中:「儘管當前語言允許使用類別來覆蓋類繼承的方法,甚至可以使用類接口中聲明的方法,但強烈建議您不要使用此功能。」 – 2010-06-18 16:20:41

+0

當然在生產代碼中。爲了調試,我將使用一切使我的生活更加簡單:) – fraca7 2010-06-28 10:39:25

1

我建議你使用儀器中的「泄漏」工具。它會告訴你,如果你有泄漏,並給你所有你需要的信息。

更新:

我剛剛看WWDC 2010的視頻「未來驗證您的應用程序」,其中,關於OS 2.X [UIImage imageNamed:]實際上有泄漏蘋果工程師的狀態保持數1比它應該。所以如果你的設備運行的是iPhone OS 2.x,那就是爲什麼!

+1

是正確的,再加上你不應該看看對象的保留數。爲什麼UIImage的保留數比預期的要多,這裏有很多合理的理由。如果泄漏工具沒有顯示泄漏,請不要擔心。 – kubi 2010-06-17 10:45:33

+0

我試過使用泄漏工具,這讓我更加困惑。我正在理解儀器泄漏的過程。這顯示我的「泄漏」不太可能是泄漏。那麼,即使是一個空的應用程序與幾個文本框和開關顯示爲泄漏。沒有添加代碼。 – 2010-06-18 08:55:14

1

知道物體是否泄漏?這幾乎是總是一個壞主意,跳到基於保留計數的結論。使用Build &分析,泄漏等來確定您是否有問題。

如果你真的想要子類和日誌dealloc,你可以,但實際上它會告訴你什麼?

相關問題