停止后,CADisplayLink会再激活一次

时间:2011-08-20 08:17:41

标签: iphone objective-c timer cadisplaylink

一切都很好,直到昨天我的应用开始表现得很奇怪。它在模拟器上运行正常但在iPhone4上它甚至在停止后还会执行一个额外的循环。这是我的初始化程序,它创建一个新的CADisplayLink计时器或恢复现有计时器:

-(void)initializeTimer{
  if (self.theTimer == nil) {  
    self.theTimer = [CADisplayLink displayLinkWithTarget:self selector:@selector(gameLoop)];
    self.theTimer.frameInterval = 2;
    [self.theTimer addToRunLoop: [NSRunLoop currentRunLoop] forMode: NSDefaultRunLoopMode];
  } else {
    self.theTimer.paused = NO;
  }

}

我需要经常停止并恢复计时器,所以我用暂停属性停止计时器:

self.theTimer.paused = YES;

然后我正在调用恢复它的初始化程序(self.theTimer.pause = NO)。如上所述,它对selector方法执行一次额外的调用。很奇怪,我有这个应用程序没有一个多月没有CADisplayLink问题。我最近没有对iPhone做任何更新。此外,系统声音在同一时刻停止播放,但AVAudioPlayer对象仍然有效。正如我所说,计时器和声音在模拟器上完美运行,但我想找出导致iPhone出现问题的原因。所有的东西都是用纯UIKit完成的。任何想法从哪里开始?

1 个答案:

答案 0 :(得分:0)

非常奇怪。我刚从测试iPhone 4中删除了我的应用程序,编译并再次运行它,问题就消失了。我知道我没有发现问题,但经过大量的审判时间后我放弃了。但是,之后,我已将我的应用程序提交到应用商店并获得批准。希望这是某种调试问题而不是真正的问题。