NSNumber有什么问题

时间:2011-03-27 14:16:12

标签: iphone objective-c++ nsnumber

我写了这段代码:

bs = [NSNumber numberWithFloat:[mystring.text floatValue]];
NSLog(@"bs = %@",bs);

...

float x = [bs floatValue];

当程序想要执行上面的行时崩溃为什么?

输出: bs = 2.8,真正的100%

2 个答案:

答案 0 :(得分:2)

在您将NSNumber对象分配给ivar bs之间,它是由运行时释放的。我假设您创建bs的位置以及尝试将其分配给x的位置有两种不同的方法。如果是这种情况,您需要告诉运行时您想要将ivar bs保持一段时间:

[bs retain];

如果你这样做,你需要告诉你在dealloc中完成的运行时:

-(void)dealloc {
    [bs release];
    [super dealloc];
}

基本上,如果你没有在方法名称中使用alloc,copy,mutableCopy,new创建一个对象,那么你就不拥有该对象。

答案 1 :(得分:1)

代码段似乎没问题。 我猜是因为bs在获取浮点值之前被释放了。 retain bs最简单的方法是将其更改为属性:

@property (nonatomic,retain)NSNumber* bs;
release

dealloc