0

ばかげた質問のように聞こえるかもしれませんが、好奇心から、目的 c で for ループを一時停止することは可能ですか?

例えば:

for (NSManagedObject *a in sortedArray)
{
  //do something that takes time, for example download something
}

上記の例では、 for ループはすべてのダウンロードを同時に開始します。これは、ダウンロードを開始した後 (またはそこに追加したアクション)、配列内の次のオブジェクトに移動するためです。ダウンロードが完了するまで待ちたい場合はどうすればよいですか? ダウンロードを一時停止する方法はありますか、または既にダウンロードされたものをスキップして for ループを再起動する必要がありますか?

4

2 に答える 2

1

これを実現するにはいくつかの方法があります。1 つの方法は、Grand Central Dispatch セマフォを使用することです。ディスパッチ セマフォについては、http: //www.mikeash.com/pyblog/friday-qa-2009-09-18-intro-to-grand-central-dispatch-part-iv-odds-and-ends.htmlを参照してください。

また、SOでこの質問を確認してください。まさにあなたが必要としているものかもしれません:ダウンロードが終了するまで待機するように1つのスレッドに通知し、その後待機中のスレッドにデータを渡すにはどうすればよいですか?

于 2013-02-15T08:53:16.513 に答える
0

複数のプロセスに NSThreads / GCD を使用する必要があります。

ただし、同期メソッドと非同期メソッド、および場合によってはコールバックを処理する必要があります。

于 2013-02-15T09:07:00.767 に答える