Cocoa的GB有多大?

zek*_*kel 8 math cocoa objective-c

Apple 改变了他们在Max OS X 10.6中计算KB,MB和GB的方式.他们使用1000而不是1024.

我的问题是如何在我的代码中处理这个问题?我正在尝试释放空间量,所以我得到了字节数NSFileManager.当我向用户显示时,我需要根据它们是10.5还是10.6将其转换为GB.

是否有GB大小的内置常量?(或者无论你怎么称呼1024号码?)定义自己的数字似乎有点傻.

## I'm currently doing something like this.
if (running10_6) {
    double gbConst = 1000 * 1000 * 1000;
} else {
    double gbConst = 1024 * 1024 * 1024;
}

NSDictionary *attr = [NSFM attributesOfFileSystemForPath:@"/" error:&error];
double bytes = [[attr objectForKey:NSFileSystemFreeSize] doubleValue];
double freeGB = bytes / gbConst;
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 5

从OS X 10.8/iOS 6.0开始,新的NSByteCountFormatter类完全符合您的要求:

enum {
   NSByteCountFormatterCountStyleFile   = 0,
   NSByteCountFormatterCountStyleMemory = 1,
   NSByteCountFormatterCountStyleDecimal = 2,
   NSByteCountFormatterCountStyleBinary  = 3
};
Run Code Online (Sandbox Code Playgroud)

十进制/二进制是1000和1024.文件/内存是操作系统用于该度量的任何别名.