2012-03-22 3 views
0

Я хотел, чтобы иметь возможность приостановить/возобновить свою NSTimer и нашел this below answer: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

ответ

0

Вы никогда не должны вызывать init (или любой из других методов в одной и той же семьи) на объекте дважды. (Here's why). Измените эту строку следующим образом:

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

+0

Я рад, что вы отредактировали свой ответ - молодец, сэр! Работает как сон –