bs = [NSNumber numberWithFloat:[mystring.text floatValue]];
NSLog(@"bs = %@",bs);
...
float x = [bs floatValue];
当程序想要执行上面的行时崩溃为什么?
输出: bs = 2.8,真正的100%
答案 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