10

私はGCDとスレッディングについてはとても新しいです。私はチュートリアルを終わり、非常に混乱してきました。 簡単な言葉で説明できる人もいます。アップルの開発者向けリンクを提案してください。ディスパッチキューとNSOperationQueueの相違点

ありがとうございます!

+0

この場合、私はSOのリンクを提案することができます:) ..ここであなたはそれらが有用であることを願っています... http://stackoverflow.com/questions/7078658/operation-queue-vs-dispatch-queue-for-ios -application http://stackoverflow.com/questions/10373331/nsoperation-vs-grand-central-dispatch http://stackoverflow.com/questions/11676629/ios-dispatch-async-vs-nsoperationqueueまた、2つの外部リンク: - http://maniacdev.com/2010/03/easier-threading-with-nsoperation-for-better-performance http://blog.spec-india.com/difference-between-nsthread-and-nisperation – IronManGill

答えて

13

NSOperationQueueは、キャンセルする必要があるか、複雑な依存関係が必要な長期実行操作に、より適しています。 GCDディスパッチキューは、最小限のパフォーマンスとメモリオーバーヘッドを持つ短いタスクに適しています。

NSOperationQueueでエンキューされた操作を(操作がサポートしている限り)取り消すことができます。ブロックをGCDディスパッチキューにエンキューすると、ある時点でブロックが確実に実行されます。

次のリンクを確認すると、役に立つことがあります。

Operation Queue vs Dispatch Queue for iOS Application

+0

私は持っています[この記事](http://stackoverflow.com/questions/3762200/how-to-keep-an-iphone-app-running-on-backgroundfullyfoperational/17554514#17554514)のバックグラウンドプロセスに関する回答を見ました。私は長い時間のためのレコーダーアプリケーションを実行する必要があります。正しい方法で私を指示してください – Valli

1

GCDNSOperationQueueより低いレベルで、その主な利点は、その実装は非常に軽量でロックフリーアルゴリズムとパフォーマンスに焦点を当てているということです。

一般的に、必要に応じて最高レベルの抽象化を使用する必要があります。つまり、通常GCDの代わりにNSOperationQueueを使用する必要があります。 NSOperationQueueを使用すると、操作の実行方法をさらに詳細に制御できます。

+0

再ありがとう私が聞いたことは、GCDはヘッドウェイト以上のものを使用している間に使用する方が便利だと聞きました(いくつかのチュートリアルに基づいて..) – Valli