CADisplayLink запускается еще один раз после его остановки - PullRequest
1 голос
/ 20 августа 2011

Все было хорошо, до вчерашнего дня, когда мое приложение начало вести себя странно.Он работает нормально на симуляторе, но на 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).Как уже было сказано, он выполняет еще один вызов метода селектора.Очень странно, у меня это приложение работало без проблем CADisplayLink больше месяца.Я не делал никаких обновлений для iPhone в последнее время.Кроме того, системные звуки перестали воспроизводиться одновременно, но объекты AVAudioPlayer по-прежнему работают.Как я уже говорил, таймер и звуки отлично работают на симуляторе, но я хочу выяснить, что вызывает проблемы на iPhone.Все вещи сделаны с чистым UIKit.Есть идеи с чего начать?

1 Ответ

0 голосов
/ 03 сентября 2011

Очень странно. Я просто удалил свое приложение из тестового iPhone 4, скомпилировал и снова запустил на нем, и проблема исчезла. Я знаю, что не заметил проблему, но после большого количества пробного времени я сдался. Однако после этого я отправил свое приложение в магазин приложений, и оно было одобрено. Надеюсь, это была какая-то проблема отладки, а не настоящая проблема.

...