1

私のアプリが奇妙に動作し始めた昨日までは、すべて問題ありませんでした。シミュレーターでは問題なく動作しますが、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 で行われます。どこから始めればよいですか?

4

1 に答える 1

0

とても奇妙です。テスト用の iPhone 4 からアプリを削除し、コンパイルして再度実行したところ、問題はなくなりました。私は問題を見つけられなかったことを知っていますが、多くの試行時間の後、私はあきらめました. しかし、その後、アプリをアプリ ストアに提出したところ、承認されました。それが実際の問題ではなく、ある種のデバッグの問題であることを願っています。

于 2011-09-02T20:16:44.100 に答える