我有一个类NSTimer *myTimer;
变量。在某些时候,我做的:NSTimer不停止
myTimer = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(doStuff) userInfo:nil repeats: YES];
进一步,我有一个方法:
- (void)dealloc
{
if (myTimer) { //if myTimer==nil it already has been stopped in the same way
[myTimer invalidate];
myTimer = nil;
}
}
现在,问题:
- (void)doStuff
{
if(myTimer)
{
//do stuff
}
}
,我停止我的定时器类时通过释放当我释放课程时,定时器继续运行,并继续发射事件。难道我做错了什么?看起来dealloc方法从来没有被调用,否则myTimer将为零,即使选择器被触发,它也不会进入if(myTimer)
所以你应该清理计时器,然后再期待物体消失。 – 2010-09-20 16:09:09
@Joshua +1这就是我所说的......你必须使计时器无效以便让你的对象释放,这可能最终触发'dealloc'方法(只是没有太多的单词):) – 2010-09-20 16:11:59