NSTimer Пауза / возобновление утечки - PullRequest
0 голосов
/ 22 марта 2012

Я хотел иметь возможность приостановить / возобновить работу моего NSTimer и нашел ответ ниже :

NSDate *pauseStart, *previousFireDate;

-(void) pauseTimer:(NSTimer *)timer { 

    pauseStart = [[NSDate dateWithTimeIntervalSinceNow:0] retain];

    previousFireDate = [[timer fireDate] retain];

    [timer setFireDate:[NSDate distantFuture]];
}

-(void) resumeTimer:(NSTimer *)timer {

    float pauseTime = -1*[pauseStart timeIntervalSinceNow];

    [timer setFireDate:[previousFireDate initWithTimeInterval:pauseTime sinceDate:previousFireDate]];

    [pauseStart release];

    [previousFireDate release];
}

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

[timer setFireDate:[previousFireDate initWithTimeInterval:pauseTime sinceDate:previousFireDate]];

Кто-нибудь может мне помочь? Из кода, который я использовал, видно, что pauseStart и previousFireDate сохраняются в методе pauseTime и освобождаются в методе resumeTimer.

Большое спасибо

Sam

1 Ответ

0 голосов
/ 22 марта 2012

Никогда не следует вызывать init (или любой другой метод в том же семействе) для объекта дважды.( Вот почему ).Измените эту строку на:

[timer setFireDate:[NSDate dateWithTimeInterval:pauseTime sinceDate:previousFireDate]];

и все будет в порядке.

...