2011-12-17 79 views
1

我有一个NSTimer在我的h和在的/米viewDidLoad中声明的我的代码:发布NSTimer iPhone?

timer = [NSTimer scheduledTimerWithTimeInterval:kComplexTimer target:self selector:@selector (main) userInfo:nil repeats:YES]; 

我也有[计时器释放];在我的dealloc。

但是,当我退出视图并返回它时,定时器实际上并没有释放,它的速度加倍!我该如何解决这个问题&我做错了什么?

感谢

回答

3

尼斯的答案,但好检查时间是否为零或不以避免不必要的例外..

if(timer ! = nil) 
{ 
    [timer invalidate]; 
    timer = nil; 
} 

谢谢...

6

你不需要释放它,你有没有保留它 - 作为一项规则。 您只需拨打[timer invalidate];即可停止计时。如果您想重置

2
[timer invalidate]; 
timer = nil; 

第二行是重要的NSTimer

+0

+1'nil'是非常关键的。我曾经遇到过定时器的问题并重复使用,直到添加该部分。 – dredful 2011-12-17 17:13:56

1

你不能呼叫释放,它不“新”,“黄金”,“保留”来创建一个对象上,“复制”。

在这种情况下,您已通过scheduledTimerWithTimeInterval方法创建了一个Timer,因此您不能调用release方法,而是调用[timer invalidate]来停止定时器。