我希望能够暂停/恢复我的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方法中发布。
非常感谢
萨姆
答案 0 :(得分:0)
您永远不应该在对象上调用init
(或同一系列中的任何其他方法)两次。 (Here's why)。将该行更改为:
[timer setFireDate:[NSDate dateWithTimeInterval:pauseTime sinceDate:previousFireDate]];
你会没事的。