IPhone - Свободное место на устройстве отображается неправильно (+ - 200 Мб разницы)
Я использую этот метод для получения свободного места на диске, извлеченного из кода, найденного после некоторых исследований.
float freeSpace = -1.0f;
NSError* error = nil;
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSDictionary* dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];
if (dictionary) {
NSNumber* fileSystemSizeInBytes = [dictionary objectForKey:NSFileSystemFreeSize];
freeSpace = [fileSystemSizeInBytes floatValue];
}
Интересно, почему при запуске это дает мне свободное пространство 3660062720.000000 байт
что даст 3,408699035644531 Гб (/1024/1024/1024)
Но заглянув в настройки iPhone → общая информация (а также в iTunes), я сказал, что у моего iPhone осталось всего 3,2 ГБ.
Где ошибка?
Ответы
Ответ 1
Похоже, что иногда свободное пространство сообщается неправильно https://discussions.apple.com/thread/2566412?threadID=2566412
EDIT: я попробовал следующий код и заметил, что на моем устройстве было также расхождение ~ 200 МБ. Может быть, это хранилище зарезервировано для системы как-то?
NSDictionary *fsAttr = [[NSFileManager defaultManager] fileSystemAttributesAtPath:NSHomeDirectory()];
unsigned long long freeSpace = [[fsAttr objectForKey:NSFileSystemFreeSize] unsignedLongLongValue];
NSLog(@"%llu", freeSpace);
NSLog(@"%f", freeSpace / 1073741824.0);