私のアプリが奇妙に動作し始めた昨日までは、すべて問題ありませんでした。シミュレーターでは問題なく動作しますが、iPhone4 では停止後も 1 サイクル余分に実行されます。新しい 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 メソッドへの追加の呼び出しを 1 つ実行します。非常に奇妙なことに、私はこのアプリを CADisplayLink の問題なしで 1 か月以上使用していました。最近iPhoneのアップデートをしていません。さらに、システム サウンドは同時に再生を停止しましたが、AVAudioPlayer オブジェクトは引き続き動作します。私が言ったように、タイマーとサウンドの両方がシミュレーターで完全に機能しますが、iPhoneで問題が発生する原因を突き止めたいです。すべてのものは純粋な UIKit で行われます。どこから始めればよいですか?