ビープ音を鳴らすためにボタンをクリックし、バックグラウンドスレッドとして、ビューコントローラにウェルカムメッセージが表示されると、ビープ音はアプリケーションを閉じるまで継続します。 ウェルカムメッセージがビューコントローラに到着したときに、さらに実行するためにキューを一時停止するにはどうすればよいですか?呼び出しのためのdispatch_async要求への要求の送信を停止する方法はありますか?
私は別のビューコントローラdispatch_suspend(dispatch_get_main_queue());
から電話をかけましたが、ウェルカム画面が表示されてもビープ音はバックグラウンドで連続しています。誰かがキューの実行を停止するか、単にキューをクリーンアップするように指示できますか?
dispatch_async(dispatch_get_main_queue(), ^{
NSInteger timeintervalForBeep;
if (_bu.buModel == BuTwo) {
timeintervalForBeep = 7;
} else {
timeintervalForBeep = 2;
}
_findBeepTimer = [NSTimer scheduledTimerWithTimeInterval:timeintervalForBeep
target:self
selector:@selector(makeBeep)
userInfo:nil
repeats:YES];
// Fire it once immediately.
[_findBeepTimer fire];
});
コール[_findBeepTimer無効化]。あなたのmakeBeepメソッドで。 Btw、すぐに発射するので、あなたのタイマーは無駄です:なぜあなたはすぐにビューを更新していないのですか?タイマーを作成して起動する方法は、メソッドを呼び出す方法と同じです。 –
停止ボタンに[_findBeepTimer invalidate]がありますが、開始画面が表示されたら、表示コントローラーが変更され、ビープ音がバックグラウンドで行われているので、キャンセルするオプションはありません。しかし、通常、私はボタンでそれを開始し、それは私のためにうまく動作するボタンで終了します。 –
コードを追加することをお勧めします。タイマーの開始は、アーキテクチャの背後にあるアイデアのように見える間に投稿したばかりです。 –