2011-01-11 25 views
1

我認爲這段代碼應該沒問題,但靜態分析器不喜歡它。我無法弄清楚爲什麼,希望有人能幫助我理解。代碼工作正常,分析結果只是讓我感到困惑。靜態分析儀說我有泄漏....爲什麼?

Coin *tempCoin = [[Coin alloc] initalize]; 
self.myCoin = tempCoin; 
[tempCoin release]; 

​​是一個通用的NSObject,它有一個initalize方法。 myCoin是當前視圖的屬性,類型爲​​。我想這是告訴我我正在泄漏tempCoin

在我看來的.h我已經將myCoin設置爲非原子屬性,保留。

我試圖自動釋放代碼以及該正常釋放,但靜態分析器繼續說:
1.方法返回一個Objective-C對象與1保留計數(擁有參考)
2。在此點分配的對象不再在此點之後被引用,並且保留計數爲+1(對象泄露)

97行是我顯示的第一行。

回答

7

因爲靜態分析儀正在尋找init而不是initialize。它看到後者,並假定由[Coin alloc]返回的對象返回與initialize不同的對象,從而泄漏第一個對象。

將方法的名稱更改爲init,靜態分析器將不再報告泄漏。

+0

謝謝。那樣做了。 Ahhhhh ...編譯時沒有警告的代碼。 – Walter 2011-01-11 22:07:18

相關問題