我从以下方法获得可用内存:
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 AND在设备上显示的设备内存= 8.4 GB
大约700 MB的差异。为什么会这样?任何建议。
我用来查看设备上设备内存的路径如下。 转到: - 设置 - >一般 - >关于 - >可用
答案 0 :(得分:2)
您的计算不准确函数返回大小(以字节为单位),因此假设返回值为9139650391
,您需要将其除以bu (1024*1024*1024)
= 1073741824
所以9139650391/1073741824
等于大约8.5 GB而不是9.14 GB
关于100 MB的差异,仍然存在差异,但不会大到700 MB