NSNumber崩溃程序

时间:2010-08-26 13:26:15

标签: iphone objective-c macos

HI,

由于格式化问题,我在我的iPhone应用程序中将浮动转换为NSNumber。虽然它生成了正确的字符串,但它在释放对象后会崩溃程序。

我为Mac OS X编写了简单的程序作为控制台应用程序,同样的问题出现了。任何人都可以建议如何解决这个问题?这是代码示例。所有3条消息都写入日志,然后发生EXEC_BAD_ACCESS错误...

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSString *FormattedValueString = [[NSString alloc] init];
    NSString *FormattedValueString1 = [[NSString alloc] init];



    NSNumber *myNumber = [[NSNumber alloc] initWithDouble:100.345];
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
    [numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 

    FormattedValueString = [myNumber stringValue];
    FormattedValueString1 = [numberFormatter stringFromNumber:myNumber];

    NSLog(FormattedValueString);
    NSLog(FormattedValueString1);

    [FormattedValueString release];
    [FormattedValueString1 release];
    [numberFormatter release];
    [myNumber release];

    NSLog(@"Everything OK");

    [pool drain];
    return 0;
}

1 个答案:

答案 0 :(得分:5)

FormattedValueStringFormattedValueString1都是自动释放的,因此无需手动释放。而且您不需要在函数的开头分配/初始化值;进一步向下覆盖这些值。