2010-01-20 31 views
8

蘋果有changed how they calculate KB, MB, and GB in Max OS X 10.6。而不是使用1024,他們使用1000.可可中有多大的GB有一個常量嗎?

我的問題是如何處理這個在我的代碼?我試圖獲得免費的空間量,所以我通過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; 
+0

您不需要*在Leopard系統上顯示Gibibytes的可用空間 - 沒有任何東西阻止您在所有平臺上使用Gigabytes(= 10^9字節)單元。我可以欣賞與主機系統相匹配的願望,但在這裏我似乎沒有必要。 – 2010-01-20 21:22:04

+0

我向用戶展示了他們需要騰出多少空間才能讓我做出某些事情,所以如果讓它與他們的系統相匹配會更好。 – zekel 2010-01-20 21:30:51

+0

啊,好的。這是一個很好的理由想要做到這一點。 – 2010-01-20 21:33:19

回答

5

由於OS X 10.8/6.0的iOS,新NSByteCountFormatter類不正是你想要的:

enum { 
    NSByteCountFormatterCountStyleFile = 0, 
    NSByteCountFormatterCountStyleMemory = 1, 
    NSByteCountFormatterCountStyleDecimal = 2, 
    NSByteCountFormatterCountStyleBinary = 3 
}; 

十進制/二進制是1000和1024文件/內存是別名哪一個操作系統用於該措施。

相關問題