Прежде всего, я хотел бы заранее извиниться за то, что не знал об этом. Я пытался обдумать лучший способ управления памятью в этом случае.
У меня есть короткий метод определения, нужно ли добавить файл в список. Одна из проверок требует создания экземпляра NSFileManager. Поскольку некоторые проверки могут потенциально занять много времени, я хочу выпрыгнуть, как только любое из моих условий не будет выполнено. Однако, если я вернусь рано, мой экземпляр NSFileManager никогда не получит сообщение об освобождении.
Я думал об использовании AutoReleasePool, но поскольку объекты, добавленные в autoreleasepools, не освобождаются до конца текущего цикла выполнения, и моя программа просматривает многие тысячи файлов за цикл выполнения, мне не нравится оставлять их все выделяется до конца цикла.
Как я могу гарантировать, что каждый экземпляр моего NSFileManager будет выпущен соответствующим образом. Любые предложения приветствуются.
Спасибо!
- (BOOL) fileShouldBeAdded:(NSString *)filePath {
BOOL fileShouldBeAdded = TRUE;
NSFileManager *fileManager = [[NSFileManager alloc] init];
if ([[filePath lastPathComponent] containsString:@"test.txt"]) {
fileShouldBeAdded = FALSE;
return fileShouldBeAdded;
}
if (![fileManager xAttrFileAtPathShouldBeAdded:filePath]) {
fileShouldBeAdded = FALSE;
return fileShouldBeAdded;
}
if ([[BackupManager sharedInstance] isExcludedByUser:filePath]) {
fileShouldBeAdded = FALSE;
return fileShouldBeAdded;
}
if (![fileManager backupRequiredForPath:filePath]) {
fileShouldBeAdded = FALSE;
return fileShouldBeAdded;
}
[fileManager release];
return fileShouldBeAdded;
}