出错Mac 10.6及更高版本的可用启动磁盘空间

时间:2012-05-08 07:24:39

标签: objective-c macos cocoa nsfilemanager

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

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 )以获得正确的大小(当我们右键单击HardDisk时显示在Finder中 - >获取信息)。 现在,我不认为除以1000而不是1024是从KB转换为MB或其他任何方式的正确方法。那么为什么在Mac 10.6及以上版本中这样呢?

是否有任何其他功能可以让我获得最多2个小数点的可用启动磁盘空间?

1 个答案:

答案 0 :(得分:2)

磁盘驱动器,除了某些类型的软盘驱动器,一直以1000的功率来描述和销售。内存使用1024的功率,传统上(ab)使用SI的1000次幂前缀。程序员倾向于遵循记忆惯例,但它从来没有普遍和明确。

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