1

NSURLConnectionを使用して11秒ごとに非同期httpリクエストを作成しNSTimerます。メインのNSTimer実行ループで実行されます。リクエストのタイムアウトは10秒です。アプリのNSTimerUIアクティビティを増やすまではうまく機能します(タップするUIButtonsUIAlertViews頻繁に閉じるなど)。

この後、NSTimer速度が上がり、遅延なしでwhileループのように実行されます。これにより、接続応答を適切に処理できないため、アプリに多くの問題が発生します。

4

1 に答える 1

1

問題は、ボタンアクション内で NSTimer を宣言していることです...このボタンが押されるたびに、NSTimer間隔が以前の間隔にコンパイルされ、その結果、2倍の頻度で呼び出されます...次回以前の 2 倍の頻度で 2 倍の頻度で....など。

これを行う最善の方法は、.h ファイルで NSTimer を定義し、.m ファイルにコードを呼び出すたびに、最初にそれが既に存在するかどうかを確認し、存在する場合は無効にして解放することです。

  if(myTimer){
        [myTimer invalidate];
        [myTimer release]; 
  }
  myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timeInterval) userInfo:nil repeats:YES];
于 2013-01-11T04:14:18.710 に答える