私はGCDを使ってインターネットからバックグラウンドを読み込んでいます。これは小さな欠点を除いて素晴らしい作品です。私のアプリでは3つのタブがあり、いずれかのタブをクリックするとGCDが適切なタブのバックグラウンド読み込みを開始します。ユーザが第1のタブから第2のタブに移動することを決定した場合(GCDが第1のタブのダウンロードデータを開始したとき)、第1のタブに再び戻る。 GCDは別のバックグラウンドスレッドを開始します(最初のバックグラウンドスレッドがまだデータのダウンロードを完了していなくても)。Grand Central Dispatchを使用して、ブロックが既に実行されているかどうかを確認するにはどうすればよいですか?
バックグラウンドスレッドが現在実行中であるかどうかを確認する方法はありますか?ユーザーが何らかの理由でタブを非常に素早く切り替えることを選択した場合、複数のバックグラウンドスレッドを開始しないようにします。
"GCDは別のスレッドを開始します"。実際に私はGCDに別のスレッドを開始するように言っていると思います。スレッドが実行中であることを示すには、何らかのフラグが必要です。ブロックの開始時にtrueに、最後にfalseに設定します。私はブールへの読み書きは本質的であると信じています。 –