0

我从以下方法获取可用内存:

static void print_free_memory () {
float totalSpace = 0.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: NSFileSystemSize];  
    totalSpace = [fileSystemSizeInBytes floatValue];  
    NSLog(@"Total memory:%f",totalSpace);
    freeMemAvailable = [[dictionary objectForKey:NSFileSystemFreeSize] floatValue];
    NSLog(@"Free Memory:%f",freeMemAvailable);
} else {  
    NSLog(@"Error Obtaining File System Info: Domain = %@, Code = %@", [error domain], [error code]);  
}
}

上述方法返回 = 9139.650391 mb ~ 9.14 GB 并且设备上显示的设备内存 = 8.4 GB

大约有 700 MB 的差异。为什么会这样?有什么建议么。

我在device上查看设备内存的路径如下。转到:-设置->常规->关于->可用

4

1 回答 1

2

您的计算不精确,函数返回字节大小,因此假设返回值是9139650391您需要将其除以 bu (1024*1024*1024)=1073741824

所以9139650391/1073741824大约等于 8.5 GB 而不是 9.14 GB

关于100MB的差异,还是有差异的,但没有700MB那么大

于 2012-06-22T11:24:00.493 回答