2012-01-24 66 views
-1

我正在使用xcode中的「分析」工具來檢查我的應用程序中是否存在潛在的泄漏。如何解決'潛在的泄漏'問題

作爲結果,我收到以下警告。

enter image description here

如何解決上面顯示的潛在的泄漏? 「self.answerArray」只是我在頭文件中聲明

enter image description here

回答

1

你叫mutableCopy陣列上的數組(它返回一個新的陣列+1的保留計數 - 你擁有它) ,並且將它分配給一個屬性(我認爲它是一個強大的/保留的屬性),並且你沒有釋放它。你在泄漏記憶。

您應該在將其分配給屬性後發佈tempArray - 並確保該屬性在您的類dealloc方法中發佈。

+0

哦,我沒有意識到可變副本會增加保留計數。感謝您的回覆 – Zhen

+0

根據約定,名稱中的Copy,Alloc,Retain或New都由調用者擁有。我一直認爲它是CARN規則:) – Jasarien

0

您應該發送保留/釋放到answerArray(釋放舊的對象分配一個新的人之前,保留新的對象),或者,可能會更好,聲明屬性

@property (retain) NSArray* answerArray; 

這樣編譯器會生成發佈/保留(分配)給你。見documentation。否則,對象answerArray在賦值(answerArray = tempArray)將保持懸停在內存中之前引用。

如果你將使用聲明的屬性,確保添加您的臨時變量來自動釋放池:

tempArray = [[self.answerArray mutableCopy]autorelease]; 

或者只是把它釋放自己(它超出範圍右前)。