Утечка памяти в NSMutableArray, не может автоматически выпустить - PullRequest
0 голосов
/ 26 февраля 2012

У меня проблемы с освобождением tempArray ниже ... tempArray - утечка, и я попытался вернуть [tempArray autorelease], и ​​это вызывает сбой.Кто-нибудь знает, как избавиться от утечки памяти в tempArray?

+(NSMutableArray*) returnTheArray:(NSString*)thePath forTheKey:(NSString*)theKey {

NSString *errorDesc = nil;
NSPropertyListFormat format;
NSString *plistPath;
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                          NSUserDomainMask, YES) objectAtIndex:0];
NSString *testString = [thePath stringByAppendingString:@".plist"];
plistPath = [rootPath stringByAppendingPathComponent:testString];

if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
    plistPath = [[NSBundle mainBundle] pathForResource:thePath ofType:@"plist"];

}
NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath];
NSDictionary *temp = (NSDictionary *)[NSPropertyListSerialization
                                      propertyListFromData:plistXML
                                      mutabilityOption:NSPropertyListMutableContainersAndLeaves
                                      format:&format
                                      errorDescription:&errorDesc];
 if (!temp) {
 CCLOG(@"Error reading plist: %@, format: %d", errorDesc, format);
 }

NSMutableArray *tempArray = [[NSMutableArray alloc] initWithArray:[temp objectForKey:theKey]];

return tempArray;

}

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

Ну, проблема в том, что returnTheArray - это не имя, которое анализатор распознает как возвращающее сохраненное значение - вот почему он жалуется.Так что либо вы переименовываете метод, либо возвращаете автоматически освобожденное значение.Но если для последнего необходимо убедиться, что «потребитель» возвращаемого значения правильно с ним справляется - сохраняя его, если значение должно сохраняться и после следующей операции очистки пула автоматического освобождения.

0 голосов
/ 29 февраля 2012

попробовать:

NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[temp objectForKey:theKey]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...