Авто-аннулирование NSTimer - PullRequest
1 голос
/ 25 июля 2011

Сколько времени занимает автоматическая аннулирование NSTimer при использовании таймера с повторениями: НЕТ.Может ли это быть ложным предупреждением при запуске профилировщика для утечки?

Когда я сделал запрос на сервер, я получаю успех или сбой.В любом случае я создаю новый таймер

_timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(updateSystems) userInfo:nil repeats:NO];

Когда таймер срабатывает, приложение выполняет новый запрос к серверу.

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Таймер отключится по истечении заданного вами интервала времени, и у него больше не будет циклов для выполнения.Так что, если вы установите repeats:NO, он будет признан недействительным.

Я думаю, что утечки не в NSTimer, а в селекторе, который он выполняет вместо этого, который обрабатывается вами.Используйте инструмент анализатора XCode (CMD-Shift-A), чтобы определить, где находятся утечки, и / или проверьте, что вы отпускаете все, что вы alloc & retain в этом селекторе.

NSTimer невиновно.:)

0 голосов
/ 25 июля 2011

Таймер станет недействительным после его срабатывания (после заданного вами интервала времени).

См. ref .

Кроме того, внутри вызываемого селекторатаймером блок кода должен быть покрыт NSAutoreleasePool.

Метод выбора должен быть таким:

-(void)timerMethod:(NSTimer*)timer
{
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

  ....
  [pool drain];
}
...