UILabel утечка памяти? - PullRequest
0 голосов
/ 03 мая 2009

У меня есть NSTimer, который срабатывает каждую секунду, и в эту секунду я обновляю UILabel, устанавливая свойство text следующим образом:

remainglbl.text = [NSString stringWithFormat:@"%i:%02i", var1, var2];   

Работает нормально, но когда я запускаю его в xcode с помощью Start With Performance Tool -> Leaks, кажется, что память просто продолжает лазать и лазить.

Насколько я понимаю, строка должна быть автоматически освобождена (хотя я никогда не вижу уменьшения памяти или прекращения увеличения).

Это утечка памяти? Есть ли лучший способ сделать это, чтобы контролировать использование памяти?

Спасибо!

Обновление: код для создания таймера выглядит следующим образом:

timeTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeTime:) userInfo:nil repeats:YES];  

код для очистки при завершении таймера выглядит следующим образом:

[timeTimer invalidate];
[timeTimer release];
timeTimer = nil;

Что-то не так с этим? Я думал, что память может быть освобождена после окончания таймера, но это не так.

Ответы [ 2 ]

1 голос
/ 10 июня 2009

Я считаю, что проблема заключалась в том, что я не понимал инструменты производительности. Работа с Activity Monitor не показывает увеличение использования памяти.

0 голосов
/ 03 мая 2009

Просто из любопытства, проблема все еще возникает, если вы используете [ОстальноеLbl setText:] вместо установки свойства? Ваш код выглядит нормально ... память должна быть очищена, так как stringWithFormat автоматически освобождает строку.

Еще одна вещь, которую стоит попробовать: когда вы создаете потоки в Objective-C, вы должны обернуть весь код в NSAutoreleasePool, чтобы очистить все, что вы создаете во время выполнения потока. Это не должно иметь значения здесь, поскольку уже должен существовать - но это стоит выстрел.

...