0

使用此论坛中的其他答案,我制作了此类方法来判断字符串是否为数字。它工作正常,但每次调用它时我都必须分配初始化吗?毕竟,如果这不是 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;
    }
4

1 回答 1

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

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

于 2012-08-28T12:54:17.477 回答