我正在使用xcode中的「分析」工具來檢查我的應用程序中是否存在潛在的泄漏。如何解決'潛在的泄漏'問題
作爲結果,我收到以下警告。
如何解決上面顯示的潛在的泄漏? 「self.answerArray」只是我在頭文件中聲明
我正在使用xcode中的「分析」工具來檢查我的應用程序中是否存在潛在的泄漏。如何解決'潛在的泄漏'問題
作爲結果,我收到以下警告。
如何解決上面顯示的潛在的泄漏? 「self.answerArray」只是我在頭文件中聲明
你叫mutableCopy
陣列上的數組(它返回一個新的陣列+1的保留計數 - 你擁有它) ,並且將它分配給一個屬性(我認爲它是一個強大的/保留的屬性),並且你沒有釋放它。你在泄漏記憶。
您應該在將其分配給屬性後發佈tempArray
- 並確保該屬性在您的類dealloc
方法中發佈。
您應該發送保留/釋放到answerArray(釋放舊的對象分配一個新的人之前,保留新的對象),或者,可能會更好,聲明屬性
@property (retain) NSArray* answerArray;
這樣編譯器會生成發佈/保留(分配)給你。見documentation。否則,對象answerArray在賦值(answerArray = tempArray)將保持懸停在內存中之前引用。
如果你將使用聲明的屬性,確保添加您的臨時變量來自動釋放池:
tempArray = [[self.answerArray mutableCopy]autorelease];
或者只是把它釋放自己(它超出範圍右前)。
哦,我沒有意識到可變副本會增加保留計數。感謝您的回覆 – Zhen
根據約定,名稱中的Copy,Alloc,Retain或New都由調用者擁有。我一直認爲它是CARN規則:) – Jasarien