2012-02-14 8 views
6

Io uso questo metodo per ottenere lo spazio libero sul disco, estratto da un codice trovato dopo alcune ricerche.iPhone - Spazio disponibile sul dispositivo segnalato in modo errato (differenza + - 200 Mb)

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]; 
    } 

mi chiedo perché quando runing questo, mi dà uno spazio libero di 3660062720,000 mila byte che darebbe 3,408699035644531 Gb (/ 1024/1024/1024)

Ma guardando nel mio ambiente iPhone - > informazioni generali (e anche in iTunes), ho detto che il mio iPhone ha solo 3,2 Gb a sinistra.

Dov'è l'errore?

+0

Hai mai trovato una risposta a questo? –

+1

@PauliusLiekis no – Oliver

risposta

2

sembra che a volte lo spazio libero viene segnalato in modo errato https://discussions.apple.com/thread/2566412?threadID=2566412

EDIT: ho provato il seguente codice e ho notato che il mio dispositivo, c'era anche un 200MB discrepanza ~. Forse che lo spazio di archiviazione è riservato al sistema in qualche modo?

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

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

NSLog(@"%llu", freeSpace); 
NSLog(@"%f", freeSpace/1073741824.0); 
+1

Interruzione. Ma secondo il mio iPhone e non solo iTunes, è anche 3.2 Gb ... E il metodo restituisce 3.4 ... – Oliver

+0

Aggiornato la mia risposta, noto anche una differenza – danielbeard

+0

Molto molto strano ... – Oliver

Problemi correlati