[directoryPath stringByAppendingPathComponent:filePath];
возвращает автоматически освобожденный объект. Поскольку это происходит внутри такой тесной петли, все эти объекты складываются и вызывают большой объем памяти, о котором идет речь. Все, что вам нужно сделать, чтобы это исправить, это избавиться от них чаще. Вы можете изменить свой метод на тот, который не использует авто-релиз, или вы можете просто создать свой собственный, плотный авто-релиз, как этот:
while ( ( filePath = [ dirEnum nextObject ] ) != nil ) {
NSAutoreleasePool* pool = [NSAutoreleasePool new];
fullFilePath = [ directoryPath stringByAppendingPathComponent:filePath ];
NSLog( @"%@ \n", fullPath );
[pool drain];
}
Это гарантирует, что все будет выпущено , как только , как вам больше не нужно, избегая накопления объектов во время цикла.
(Интересная заметка: NSPathStore2
- это закрытый класс, связанный с NSString
(который является кластером классов), используемый для хранения строк типа пути. Вот как я узнал, какой метод был ошибочным.)