1

私が持っている基本的なアイデアは、1 つのボタンをクリックして無限ループに入るというものです。別のボタンをクリックして停止し、このループから抜け出す予定です。問題は、一度無限ループに入ると、2 回目のクリックが検出されないため、抜け出せないことです。これを機能させる方法について何か考えはありますか?ありがとうございます。

-(IBAction) startButton {
  while (1) { 
    // code
  }     
}

-(IBAction) stopButton {
  NSLog(@" out of loop now");
}
4

3 に答える 3

2

タイマーを使用できない場合は、バックグラウンド スレッドNSOperationまたはグランド セントラル ディスパッチ タスクを使用する必要があります。

于 2010-08-13T22:15:36.200 に答える
1

ループに何をさせたいですか?多分あなたはを使うことができますNSTimer

于 2010-08-13T21:08:33.443 に答える
1

NSOperation と NSOperationQueue を使用しないのはなぜですか? ループを通過するたびに、isCanceled かどうかを確認して中断できます。こうすることで、メイン スレッド (UI の更新と応答が行われる) がフリーズせず、アプリがビーチ ボールになることもありません。

重要なことは、メイン スレッドをループに結び付けると、ループが終了するまでそれ以上のイベントを取得できないことです。つまり、ボタンをクリックしてキャンセルする必要はありません。

于 2010-08-13T23:41:28.847 に答える