开发者

Is there a constant for how big a GB is in Cocoa?

开发者 https://www.devze.com 2022-12-16 21:18 出处:网络
Apple has changed how they calculate KB, MB, and GB in Max OS X 10.6. Instead of using 1024, they use 1000.

Apple has changed how they calculate KB, MB, and GB in Max OS X 10.6. Instead of using 1024, they use 1000.

My question is how to deal with this in my code? I'm trying to get the amount of space free, so I get the number of bytes via NSFileManager. When I go to display that to the user, I need to turn that into GBs differently depending on whether they're on 10.5 or 10.6.

Is there a built-in constant for GB size? (Or whatever it is you would call the 1024 number? ) It seemed a little silly to define my o开发者_高级运维wn.

## 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;


Since OS X 10.8 / iOS 6.0, the new NSByteCountFormatter class does exactly what you want:

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

Decimal/Binary are 1000 and 1024. File/Memory are aliases for whichever one the OS uses for that measure.

0

精彩评论

暂无评论...
验证码 换一张
取 消