1

私は初めてNSoperationです。NSoperationシングルショットオブジェクトです。

  1. どうすれば複数の操作を同時に達成できNSoperationますか?

  2. なくても可能NSoperationQueueですか?

  3. NSoperationQueueを使用しても、FIFO形式の操作を実行しますが、どのように並行して実行されますか?

4

1 に答える 1

2

並行操作(つまり、呼び出しスレッドに対して非同期で実行される操作)を実装する場合は、追加のコードを記述して、操作を非同期で開始する必要があります。たとえば、別のスレッドを生成したり、非同期システム関数を呼び出したり、その他のことを行って、start メソッドがタスクを開始し、すぐに、おそらくタスクが終了する前に戻るようにすることができます。

ほとんどの開発者は、並行操作オブジェクトを実装する必要はありません。操作を常に操作キューに追加する場合は、同時操作を実装する必要はありません。非並行操作を操作キューに送信すると、操作を実行するスレッドがキュー自体によって作成されます。したがって、非並行操作を操作キューに追加しても、操作オブジェクト コードは非同期で実行されます。同時操作を定義する機能は、操作を操作キューに追加せずに非同期で実行する必要がある場合にのみ必要です。

同時実行プログラミング ガイド - 同時操作と非同時操作のセクションを参照してください。

また、NSOperation による同時実行の管理もお読みください。

通常、操作を操作キュー(NSOperationQueue クラスのインスタンス) に追加することによって、操作を実行します。

NSOperationQueueクラスは、一連のNSOperationオブジェクトの実行を規制します。キューに追加された操作は、明示的に取り消されるか、そのタスクの実行が終了するまで、そのキューに残ります。キュー内の (ただしまだ実行されていない) 操作は、優先度レベルと操作オブジェクト間の依存関係に従って編成され、それに応じて実行されます。アプリケーションは、複数の操作キューを作成し、それらのいずれかに操作を送信できます。

オペレーション キューは、そのオペレーションを二次スレッドで実行することによって直接実行するか、libdispatch ライブラリを使用して間接的に実行します。

NSOperationの詳細についてはこちらを、NSOperationQueue の詳細についてはこちらをご覧ください。

于 2012-10-16T08:45:34.010 に答える