gpt4 book ai didi

objective-c - Mac 10.6 及更高版本的可用启动磁盘空间错误

转载 作者:行者123 更新时间:2023-12-03 17:42:04 26 4
gpt4 key购买 nike

我正在使用以下代码来获取启动磁盘的可用磁盘空间。

NSFileManager *fm = [NSFileManager defaultManager];

double freeSpace = 0.0;
NSDictionary *attr = [[NSFileManager defaultManager] attributesOfFileSystemForPath:@"/" error:nil];
if (!error) {
freeSpace = [[attr objectForKey:NSFileSystemFreeSize] doubleValue];
}
//Convert from bytes to GB.
freeSpace = freeSpace/(1024*1024*1024);

但对于 MacOS 10.6 及更高版本,它给出的大小错误。一段时间后,我发现对于 10.5,我们需要将其除以 (1024*1024*1024) 才能获得正确的可用大小。对于 10.6 及更高版本,我必须将其除以 (1000*1000*1000) 才能获得正确的大小(当我们右键单击“硬盘”->“获取信息”时,该大小会显示在 Finder 中)。现在,我不认为除以 1000 而不是 1024 是将 KB 转换为 MB 或其他值的正确方法。那么为什么在Mac 10.6及以上版本会这样呢?

是否有任何其他函数可以让我获得可用的启动磁盘空间,最多精确到小数点后两位?

最佳答案

除某些类型的软盘驱动器外,磁盘驱动器始终以 1000 的幂来描述和销售。内存使用 1024 的幂,传统上(ab)使用 SI 的 1000 幂前缀。程序员倾向于遵循内存约定,但它从来都不是通用且明确的。

1999 年,IEC 建议仅对 1000 的幂使用 SI 前缀(千、兆等),并使用 a new set of prefixes 1024 的幂。自 10.6 起,Mac OS X 就磁盘和文件遵循此建议,从而更接近地匹配磁盘的广告大小,但 RAM 继续使用 1024 的幂的 SI 前缀。

关于objective-c - Mac 10.6 及更高版本的可用启动磁盘空间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10494373/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com