是否有NSCFTimer内存泄漏?

时间:2010-03-19 21:32:12

标签: iphone memory-management memory-leaks instruments

我用仪器追踪内存泄漏。我总是得到负责的图书馆是基金会的信息。当我在我的代码中跟踪它时,我最终到了这里,但我的内存管理没有任何问题:

- (void)setupTimer {
    // stop timer if still there
    [self stopAnimationTimer];

    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(step:) userInfo:nil repeats:YES];

    self.animationTimer = timer; // retain property, -release in -dealloc method
}

属性animationTimer保留计时器。在-dealloc我发布它。

现在看起来像一个框架错误?我用iPhone OS 3.0和3.1检查过,每次使用NSTimer都会出现这个问题。知道还有什么可能是问题吗?

(我的内存泄漏扫描间隔是0.1秒。但同样的事情是5秒)

3 个答案:

答案 0 :(得分:5)

请勿致电-[NSTimer dealloc]。如初。

在这种情况下,-scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:-invalidate平衡。您无需在计时器对象上调用-dealloc-release

答案 1 :(得分:3)

除非您的stopAnimationTimer方法为invalidaterelease'(然后设置为nil)您的animationTimer财产,否则您将泄露存储器中。

答案 2 :(得分:1)

我发现了:我对我的计时器有很强的参考价值。运行循环保留它。所以RC是2.但是因为Timer也拥有对目标的强引用(在我的情况下保留了定时器),我遇到了死锁情况。 -dealloc从未被调用过,因此我的计时器从未被释放过。 WTF。

相关问题