在这个字符串数字方法中,每次调用它时都必须分配吗?

时间:2012-08-28 12:49:34

标签: objective-c xcode4 nsstring alloc

在这个论坛中使用其他答案我创建了这个类方法来判断字符串是否为数字。它工作正常但每次调用时我都必须使用alloc-init吗? 毕竟如果这不是XCode4会构成内存泄漏不会吗? 注意,我正在使用XCode4,它有自动参考计数器,可以防止这种情况发生。

我希望做一些像

这样的事情
if this is not alloc-initted then alloc-init 

但似乎无法让它发挥作用。

目前的方法

+ (BOOL)isThisANumber:(NSString *)candidate{

NSNumberFormatter *fmtr = [[NSNumberFormatter alloc] init];
[fmtr setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber *myNumber = [fmtr numberFromString:candidate];
if ( myNumber== nil) {
    return NO;
    } 
else{
    return YES;
    }

1 个答案:

答案 0 :(得分:0)

如果线程安全不是问题,您可以随时执行以下操作:

static NSNumberFormatter *fmtr;
if (fmtr==nil)
{
    fmtr=[[NSNumberFormatter alloc] init];
    [fmtr setNumberStyle:NSNumberFormatterDecimalStyle];
}
NSNumber *myNumber = [fmtr numberFromString:candidate];
if ( myNumber== nil) {
    return NO;
} 
else{
    return YES;
}

顺便说一下,你的原始代码会泄漏内存:-)它每次调用时都会分配一个新的格式化程序,并且永远不会释放它。