4

c / cocoaのブロックがメインスレッドとは別のスレッドで実行されるかどうかを知りたいです。UI の応答性を維持しながら、計算コストの高いコードを実行するのに役立ちますか?

4

3 に答える 3

13

ブロックは、呼び出し可能なオブジェクトにまとめられたコードの断片にすぎません。それらがどのように実行されるかは、それを呼び出すコードに完全に依存します。

別のスレッドでブロックを実行することは可能であるだけでなく、まさにブロックの概念が導入された理由です。これは、Grand Central Dispatch をサポートするために存在し、タスク指向モデルの背後にある並行プログラミングの多くの複雑さを隠しています。

于 2010-12-02T12:10:28.127 に答える
1

別のスレッドで実行する必要はありませんが、実行できます。NSOperationQueues または GCD キューでそれらをスケジュールでき、これらのキューはバックグラウンド スレッドによってドレインできます。

はい、これは、メイン スレッドから時間のかかる作業を取り除くのに役立つ便利な構成要素になる可能性があります。しかし、ブロックが役立つのはそれだけではありません。逆に、ブロックの有無にかかわらずバックグラウンド処理を行うことができます。

于 2010-12-02T12:12:54.660 に答える
1

GCDを使用して、他のスレッドで発行するブロックをスケジュールできます。この 2 つは一緒に紹介されたので、一方についての議論では通常、もう一方について言及します。ただし、ブロック自体は本質的にマルチスレッド メカニズムではありません。

于 2010-12-02T12:14:14.473 に答える