我使用的是NSFileManager
的enumeratorAtPath
方法來計算某些目錄下的文件大小。迭代使用filemanager的dirs佔用了相當多的內存
NSString *iterDir = @"/path/to/dir/";
NSFileManager *fm = [[NSFileManager alloc] init];
NSDirectoryEnumerator *dirEnum = [fm enumeratorAtPath:iterDir];
NSString *file;
BOOL isDir;
long long fileSize = 0;
while (file = [dirEnum nextObject]) {
@autoreleasepool {
file = [iterDir stringByAppendingString:file];
if ([fm fileExistsAtPath:file isDirectory:&isDir]) {
if (!isDir) {
NSError *error;
NSDictionary *attributes = [fm attributesOfItemAtPath:file error:&error];
if (!error) {
fileSize += [attributes[@"NSFileSize"] doubleValue];
}
}
}
}
}
NSLog(@"fileSize:%lld", fileSize);
的結果是這樣的:
有時是這樣的:
是用來做什麼的內存?爲什麼即使加上一個@autoreleasepool
以外也沒有作用?
找出導致它使用儀器的原因。然後回到這裏,因爲我很好奇。 – fumoboy007