2011-09-21 67 views
0

我希望對於我有的內存泄漏提供一些支持。取消存檔時內存泄漏

我有我用NSKeyedArchiver存檔的數組中的數據。我後來解壓縮它。從功能角度來看,它運行良好,但是當我運行Instruments for Memory Leaks時,在解壓縮時會出現內存泄漏。

這是代碼:

NSArray *arrayToLoad = [[NSArray alloc] initWithArray:[NSKeyedUnarchiver unarchiveObjectWithFile:path]]; 

ballPath = [arrayToLoad copy]; 

[arrayToLoad release]; 

凡ballPath是一個NSArray。

儀器指示100%的泄漏與上面代碼中的第一行有關。我明顯錯過了一些東西,但無法找到答案。我認爲[NSKeyedUnarchiver unarchiveObjectWithFile:path]是autoreleased並且arrayToLoad被釋放,所以我迷路了。

任何意見表示讚賞。

+2

有你發佈的'ballPath',當你用它做? – venj

+1

你用ballPath做什麼 - 在代碼結束時它的保留數應該是1。 – bryanmac

回答

0

謝謝你們。在使用arrayToLoad的副本設置後,我只讀取了ballPath中的值。還沒有想通了,爲什麼我有內存泄漏,但下面的代碼的工作,即使我不以任何方式感到自豪:

if ([ballPath retainCount] > 0) { 
    [ballPath release]; 
} 

NSArray *arrayToLoad = [[NSArray alloc] initWithArray:[NSKeyedUnarchiver unarchiveObjectWithFile:path]]; 

ballPath = [[NSArray alloc] initWithArray:arrayToLoad]; 

[arrayToLoad release];