У меня есть фрагмент кода Objective C, который я унаследовал, и инструмент отслеживания утечек обнаружил утечку памяти в коде.Я не совсем разбираюсь в правилах отслеживания памяти в Objective-C, поэтому у меня возникла реальная проблема с пониманием, почему происходит утечка памяти.Код выглядит следующим образом:
+ (NSString *) getRecordingsDirectory
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *tmpRecordingsDirectory = [documentsDirectory stringByAppendingPathComponent: @"Recordings"];
NSFileManager* fileManager = [[NSFileManager alloc] init];
BOOL result;
if ([fileManager fileExistsAtPath:tmpRecordingsDirectory isDirectory:&result] == FALSE)
{
NSError* error;
[[NSFileManager defaultManager] createDirectoryAtPath: tmpRecordingsDirectory withIntermediateDirectories:TRUE attributes:nil error:&error];
// TODO - handle error return
}
[fileManager release];
[documentsDirectory release];
[paths release];
return tmpRecordingsDirectory;
}
Часть, помеченная как протекающая, является первой строкой.Как вы можете видеть, я играл с «выпуском» различных предметов, чтобы понять, имеет ли это какое-то значение.Я думал, что это должно автоматически освободить переменную путей.Однако, похоже, это не так.
Так может ли кто-нибудь сказать мне, что я делаю неправильно и как устранить эту утечку памяти?