我有一個奇怪的情況,我希望有人可以闡明一些。我在自定義對象中實現了NSCoding
協議,並且我在initWithCoder:
中遇到了內存泄漏。我有這樣的事情:在使用decodeObjectForKey時使retainCounts有意義:
NSString* titleTemp = [aDecoder decodeObjectForKey:@"title"];
if(titleTemp) {
[self setTitleString:titleTemp];
} else {
[self setTitleString:[NSString string]];
}
我有很多的這個對象的其他屬性,有些是數組,一些字符串,以及一些原語(雙打,整數),而我一直獲得內存泄漏此方法。儀器告訴我在decodeObjectForKey:
行上的每次解碼都會發生泄漏。當您泄漏每個自定義類中的每個單個解碼對象的數量超過10個對象時,內存開始累加。
但真正難倒我是這個代碼的輸出:
NSString* titleTemp = [aDecoder decodeObjectForKey:@"title"];
NSLog(@"%i", titleTemp.retainCount);
是 「3」!
Woah,這些都是從哪裏來的?打敗我。但我很想知道所有這些泄漏。謝謝!
在重新閱讀類似問題的一些答案時,我意識到我並沒有在'dealloc'(duh!)中釋放所有'retain'屬性。所以你是對的 - 我只是沒有平衡我的保留/釋放。我應該睡覺了。謝謝你的時間。 – 2012-02-20 06:05:55