【问题标题】:NSTimer Pause/ resume leakNSTimer 暂停/恢复泄漏
【发布时间】:2012-03-22 10:36:14
【问题描述】:

我希望能够暂停/恢复我的 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 方法中释放。

非常感谢

山姆

【问题讨论】:

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


    【解决方案1】:

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

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

    你会没事的。

    【讨论】:

    • 我很高兴您编辑了您的答案 - 干得好,先生!像梦一样工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多