我想将NSDecimalNumber格式化为美元值($1.5),但我遇到了崩溃。
这是我的方法:
+(NSString*) formatPriceForUser:(NSDecimalNumber*)dPrice{
NSNumberFormatter *formatter;
if (!formatter) {
formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setMaximumIntegerDigits:6];
[formatter setMaximumFractionDigits:2];
}
NSString* str = [formatter stringFromNumber:dPrice];
return str;
}崩溃发生在stringFromNumber调用上。
我做错了什么?
提前谢谢。
贡索
发布于 2009-05-08 19:01:53
您没有初始化本地变量formatter,因此它将使用堆栈中剩余的垃圾进行初始化,并且初始if (!formatter)测试将失败。在C/C++/Objective-C中,堆栈变量不会自动初始化为零。修复方法是显式地将formatter初始化为nil
static NSNumberFormatter *formatter = nil;还要注意的是,通过将它声明为static,它将在函数调用之间保持不变,因此可以避免每次调用都重新初始化它。
https://stackoverflow.com/questions/841297
复制相似问题