Iphone 数字崩溃程序

Iphone 数字崩溃程序,iphone,objective-c,macos,Iphone,Objective C,Macos,嗨 由于格式问题,我正在iPhone应用程序中将浮点数转换为NSNumber。虽然它生成正确的字符串,但在释放对象后会使程序崩溃 我写了一个简单的程序作为MacOSX的控制台应用程序,同样的问题也发生了。有人能建议如何解决这个问题吗?下面是代码示例。所有3条消息都会写入日志,然后出现EXEC\u BAD\u访问错误 #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSA

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

我写了一个简单的程序作为MacOSX的控制台应用程序,同样的问题也发生了。有人能建议如何解决这个问题吗?下面是代码示例。所有3条消息都会写入日志,然后出现EXEC\u BAD\u访问错误

#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;
}
#导入
int main(int argc,const char*argv[]
{
NSAutoreleasePool*池=[[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];
[NumberFormatterSetFormatterBehavior:NSNumberFormatterBehavior 10_4];
[NumberFormatterSetNumberStyle:NSNumberFormatterDecimalStyle];
FormattedValueString=[myNumber stringValue];
FormattedValueString1=[NumberFormatterStringFromNumber:myNumber];
NSLog(格式化的ValueString);
NSLog(格式化的ValueString1);
[FormattedValueString释放];
[FormattedValueString1发布];
[格式发布编号];
[我的号码发布];
NSLog(“一切正常”);
[泳池排水沟];
返回0;
}

FormattedValueString
FormattedValueString1
都是自动释放的,因此不需要手动释放。您不需要在函数开始时分配/初始化值;进一步向下的赋值将覆盖这些值。

FormattedValueString
FormattedValueString1
都是自动释放的,因此不需要手动释放。您不需要在函数开始时分配/初始化值;进一步向下的赋值将覆盖这些值。

s/无需/不得/:)谢谢您的回答!我在这个示例中就是这样做的,它是有效的。但回到iPhone应用程序,并做同样的事情是行不通的。同样的问题再次出现。还是谢谢你指点我远离NSNumber。这个示例应用程序中的问题是由NSString引起的,而iPhone应用程序中的问题似乎也是由NSString引起的。如果您还有什么想法,我当然会很感激:)我还修复了iPhone应用程序。我的做法是停止发布NSFormatter和NSNUmber。这不太好,不是吗?这取决于你是如何获得NSFormatter和NSNumber的。事实上,我发现NSNumber也是自动弹性的,但你必须手动释放NSFormatter。s/not need to/must not/:)谢谢你的回答!我在这个示例中就是这样做的,它是有效的。但回到iPhone应用程序,并做同样的事情是行不通的。同样的问题再次出现。还是谢谢你指点我远离NSNumber。这个示例应用程序中的问题是由NSString引起的,而iPhone应用程序中的问题似乎也是由NSString引起的。如果您还有什么想法,我当然会很感激:)我还修复了iPhone应用程序。我的做法是停止发布NSFormatter和NSNUmber。这不太好,不是吗?这取决于你如何获得NSFormatter和NSNumber。事实上,我发现NSNumber也是自动弹性的,但你必须手动释放NSFormatter。