首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone NSNumberFormatter崩溃

iPhone NSNumberFormatter崩溃
EN

Stack Overflow用户
提问于 2009-05-08 18:58:19
回答 1查看 613关注 0票数 0

我想将NSDecimalNumber格式化为美元值($1.5),但我遇到了崩溃。

这是我的方法:

代码语言:javascript
复制
+(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调用上。

我做错了什么?

提前谢谢。

贡索

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-08 19:01:53

您没有初始化本地变量formatter,因此它将使用堆栈中剩余的垃圾进行初始化,并且初始if (!formatter)测试将失败。在C/C++/Objective-C中,堆栈变量不会自动初始化为零。修复方法是显式地将formatter初始化为nil

代码语言:javascript
复制
static NSNumberFormatter *formatter = nil;

还要注意的是,通过将它声明为static,它将在函数调用之间保持不变,因此可以避免每次调用都重新初始化它。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/841297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档