iPhone - неправильно указано свободное место на устройстве (+ - разница 200 МБ) - PullRequest
6 голосов
/ 14 февраля 2012

Я использую этот метод, чтобы получить свободное место на диске, извлеченное из кода, найденного после некоторых исследований.

    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 Ответ

2 голосов
/ 14 февраля 2012

Похоже, что иногда о свободном пространстве сообщается неправильно https://discussions.apple.com/thread/2566412?threadID=2566412

РЕДАКТИРОВАТЬ: я попробовал следующий код и заметил, что на моем устройстве также было расхождение ~ 200 МБ. Может быть, это хранилище как-то зарезервировано для системы?

NSDictionary *fsAttr = [[NSFileManager defaultManager] fileSystemAttributesAtPath:NSHomeDirectory()];

unsigned long long freeSpace = [[fsAttr objectForKey:NSFileSystemFreeSize] unsignedLongLongValue];

NSLog(@"%llu", freeSpace);
NSLog(@"%f", freeSpace / 1073741824.0); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...