Утечки памяти при разархивировании - PullRequest
0 голосов
/ 21 сентября 2011

Буду признателен за поддержку утечки памяти.

У меня есть данные в массиве, который я заархивировал с помощью NSKeyedArchiver.Позже я его распакую.С функциональной точки зрения это работает хорошо, но когда я запускаю инструменты для утечек памяти, я получаю утечки памяти при неархивировании.

Это код:

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

ballPath = [arrayToLoad copy];

[arrayToLoad release];

Где ballPath - NSArray.

Приборы показывают, что 100% утечки связано с первой строкой в ​​приведенном выше коде.,Я явно что-то упускаю, но не могу выяснить что.Я думаю, что [NSKeyedUnarchiver unarchiveObjectWithFile: path] автоматически выпущен, а arrayToLoad освобожден, поэтому я потерян.

Любой совет приветствуется.

1 Ответ

0 голосов
/ 29 сентября 2011

Спасибо, ребята.Я только читаю значения в ballPath после того, как он установлен с копией arrayToLoad.До сих пор не выяснил, почему у меня утечка памяти, но приведенный ниже код работает, даже если я никоим образом не горжусь этим:

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

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

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

[arrayToLoad release];
...