我有内存泄漏,我不知道它来自何处以及如何修复它。
在某些时候,我计算了两个位置之间的距离。
double calc = [self getDistance:location to:otherLocation];
NSNumber *distance = [NSNumber numberWithDouble:calc];
在仪器中我得到泄漏对象NSCFNumber并识别
NSNumber *distance = [NSNumber numberWithDouble:calc];
作为导致此问题的一行。
我很茫然。请帮忙。
提前谢谢, 米希尔答案 0 :(得分:8)
你在那里做的事情没有错。 NSNumber
有+0保留计数(自动释放),因此您可能会在其他地方保留NSNumber
并忘记释放它。
答案 1 :(得分:3)
Leaks显示泄漏的对象在哪里创建。
如果你仔细想想,Leaks可以向你展示其他任何东西 - 它正在泄漏,因为该对象应该在某个时候被释放,而Leaks无法向你显示不存在的代码!
答案 2 :(得分:-1)
我不相信你在NSNumber线上有问题。
我运行了以下代码,我没有遇到任何问题
code>double calc = 10.1234567; NSNumber *distance = [NSNumber numberWithDouble:calc]; NSLog(@"calc: %f | %f", calc, [distance doubleValue]);
我相信你的问题在于你的方法“getDistance:to:”
就像我做的那样。放一个静态值,而不是方法,检查是否正常。
干杯,
VFN