我有一个带NSTimer *myTimer;
变量的类。在某些时候我会:
myTimer = [NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(doStuff) userInfo:nil repeats: YES];
此外,我有一个方法:
- (void)doStuff
{
if(myTimer)
{
//do stuff
}
}
当课程通过以下方式释放时,我会停止计时器:
- (void)dealloc
{
if (myTimer) { //if myTimer==nil it already has been stopped in the same way
[myTimer invalidate];
myTimer = nil;
}
}
现在,问题是当我释放课程时,计时器会不断地继续触发事件。难道我做错了什么?似乎从不调用 dealloc 方法,否则 myTimer 将为零,即使选择器被触发,它也不会进入if(myTimer)