我在项目中遇到了一些定时器问题。我们的项目暂停了一段时间,我们最近从XCode 3.2.6升级到XCode 4.2.1。这是迁移中出现的问题之一。此代码似乎在切换之前正常运行...现在定时器由于某种原因未正确无效,导致两个错误。
即使在游戏的其他屏幕上,铃声也会在铃声开始后的任何时候继续播放。
每次出现屏幕时,都会创建另一个计时器实例而不会被销毁,从而导致计时和编钟速度比以前更快。
此行为发生在View Controller中,该控制器用于级别屏幕的结束。在ViewWillAppear中,我创建了一个计时器
EOLWinCountupTimer = [[NSTimer scheduledTimerWithTimeInterval: 0.10
target: self
selector: @selector(countUpSequence)
userInfo: nil
repeats: YES]retain];
此计时器调用一个选择器,该选择器对标签上的某些乐谱计数进行排序并播放一个铃声,并打开和关闭几个视图。在序列结束时,我这样做是为了停止计时器。此代码也会在ViewWillDisappear中重复,以确保在序列完成之前播放器继续运行时计时器停止。
if (EOLWinCountupTimer != nil && [EOLWinCountupTimer isValid])
{
[EOLWinCountupTimer invalidate];
if(![EOLWinCountupTimer isValid])
{
[EOLWinCountupTimer release];
EOLWinCountupTimer = nil;
}
}