утечка памяти в приложении iphone NSNumber - PullRequest
3 голосов
/ 16 января 2010

У меня утечка памяти, и я понятия не имею, откуда она и как ее исправить.

В какой-то момент я вычисляю расстояние между двумя точками.

double calc = [self getDistance:location to:otherLocation];
NSNumber *distance = [NSNumber numberWithDouble:calc];

в инструментах я получаю как утечка NSCFNumber, и он идентифицирует

NSNumber *distance = [NSNumber numberWithDouble:calc];

как строка, вызывающая это.

Я в растерянности. Пожалуйста, помогите.

спасибо заранее, Михель

Ответы [ 3 ]

8 голосов
/ 16 января 2010

Нет ничего плохого в том, что вы там делаете. У NSNumber есть счет сохранения +0 (автоматически выпущен), так что вы, вероятно, сохраняете этот NSNumber где-то еще и забываете выпустить его.

3 голосов
/ 16 января 2010

Утечки показывают, где СОЗДАНО объект, который протекает.

Если вы подумаете об этом, на самом деле больше ничего не может показать вам Leaks - это утечка, потому что объект должен был быть выпущен в какой-то момент, а Leaks не может показать вам код, который не существует!

0 голосов
/ 16 января 2010

Я не верю, что у вас есть проблема в строке NSNumber.

Я запустил следующий код, и у меня нет проблем

code>double calc = 10.1234567;
    NSNumber *distance = [NSNumber numberWithDouble:calc];

    NSLog(@"calc: %f | %f", calc, [distance doubleValue]);

Я считаю, что ваша проблема в вашем методе "getDistance: to:"

Делай, как я сделал. поместите статическое значение вместо метода и проверьте, все ли в порядке.

Ура,
VFN

...