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;
}
答案 0 :(得分:5)
FormattedValueString
和FormattedValueString1
都是自动释放的,因此无需手动释放。而且您不需要在函数的开头分配/初始化值;进一步向下覆盖这些值。