iOS:NSTimers没有正确无效或停止

时间:2012-03-15 18:55:08

标签: ios nstimer

我在项目中遇到了一些定时器问题。我们的项目暂停了一段时间,我们最近从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;
            }
        }

0 个答案:

没有答案