【问题标题】:CADisplayLink fires one additional time after stopping itCADisplayLink 在停止后会再触发一次
【发布时间】:2011-08-20 08:17:41
【问题描述】:

一切都很好,直到昨天我的应用程序开始出现异常。它在模拟器上工作正常,但在 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;
  }

}

我需要频繁地停止和恢复计时器,所以我用 pause 属性停止计时器:

self.theTimer.paused = YES;

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

【问题讨论】:

    标签: iphone objective-c timer cadisplaylink


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 2020-08-10
      相关资源
      最近更新 更多