NSKeyedUnarchiver Утечка памяти - PullRequest
2 голосов
/ 07 апреля 2011

У меня есть этот код, чтобы загрузить набор свойств из файла, а затем назначить его.

NSMutableData* data = [NSData dataWithContentsOfFile:fullPath];
NSKeyedUnarchiver* unarc = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSMutableArray* loadedLibraries = [unarc decodeObjectForKey:@"libraries"];
IRStudyPlan* loadedStudyPlan = [unarc decodeObjectForKey:@"currentStudyPlan"];
NSMutableDictionary* loadedWordLists = [unarc decodeObjectForKey:@"wordLists"];
NSMutableDictionary* loadedStudyPlanList = [unarc decodeObjectForKey:@"studyPlanList"];
[unarc finishDecoding];
[self setLibraries:loadedLibraries];
[self setStudyPlanList:loadedStudyPlanList];
[self setCurrentStudyPlan:loadedStudyPlan];
[self setWordLists:loadedWordLists];
[unarc release];

Интересно, почему у меня утечка памяти на каждом объекте? Мой initWithCoder, похожий для всех объектов:

-(id)initWithCoder:(NSCoder *)decoder{
if([super init]!=nil){
    [self setListName:[decoder decodeObjectForKey:@"listName"]];
    [self setWordsWithStatistics:[decoder decodeObjectForKey:@"wordsWithStatistics"]];
    [self setWordsWithStatisticsInGame:[decoder decodeObjectForKey:@"wordsWithStatisticsInGame"]];
}
return self;

}

Может ли кто-нибудь просветить меня?

Большое спасибо

1 Ответ

3 голосов
/ 27 июля 2011

Инструменты покажут, где была выделена утечка памяти, в вашем случае от NSKeyedUnarchiver.Скорее всего, вы пропускаете объект, который содержит этот код.Посмотрите на жизненный цикл объекта, из которого исходит этот код.

...