我有一个带有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)
发布于 2010-09-21 00:08:11
您是否尝试过您可以使用的方便的调试器工具?如果在dealloc方法中设置断点,会发生什么情况?此外,你应该围绕你的创作发布更多的上下文。您是否有可能多次创建计时器,从而替换原始计时器(但不会使其无效),并让其随意触发?
https://stackoverflow.com/questions/3753238
复制相似问题