NSTimer暂停/恢复泄漏

时间:2012-03-22 10:36:14

标签: iphone objective-c xcode memory-leaks nstimer

我希望能够暂停/恢复我的NSTimer并找到this below answer

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方法中发布。

非常感谢

萨姆

1 个答案:

答案 0 :(得分:0)

您永远不应该在对象上调用init(或同一系列中的任何其他方法)两次。 (Here's why)。将该行更改为:

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

你会没事的。