У меня проблема, которая возникает только на устройстве, а не в симуляторе.
Анимация моего приложения запускается и останавливается с помощью следующих методов:
NSTimer* animationTimer;
-(void)startAnimation
{
if(animationTimer == nil)
animationTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f/60.0f target:self selector:@selector(drawView) userInfo:nil repeats:YES];
}
-(void)stopAnimation
{
[animationTimer invalidate];
animationTimer = nil;
}
В симуляторе это работает нормально, и drawView начинает вызываться со скоростью 60 кадров в секунду.
На устройстве (тестирование на iPod Touch) метод scheduleTimerWithTimeInterval, похоже, не работает. Кроме того, [animationTimer invalidate] вызывает EXC_BAD_ACCESS.
Я заметил очевидный, но незначительный недостаток; добавление if (animationTimer! = nil) в метод stopAnimation предотвратит сбой, но не решит проблему неправильной инициализации таймера анимации.
Редактировать: Выше не предотвращает сбой. animationTimer! = ноль, но вызов недействительным вызывает EXC_BAD_ACCESS.
Следует также добавить, что эта проблема не возникает все время на устройстве. Может быть, 40% времени.