3

入ってきてNSBlockOperation、いくつか質問があります。特に、のドキュメントaddExecutionBlockは次のように記載されています。

討論

指定されたブロックは、その実行環境について何の仮定もすべきではありません。

レシーバーが実行中または既に終了しているときにこのメソッドを呼び出すと、NSInvalidArgumentException例外がスローされます。

どんなシチュエーションで投げるNSInvalidArgumentException?「受信者が実行中」とはどういう意味ですか? 何が原因でしょうか?

4

2 に答える 2

3

ブロック操作オブジェクトには、0 個以上の実行ブロックを関連付けることができます。ブロック操作が開始されると、関連するすべての実行ブロックが同時実行のために送信されます。警告は、この時点以降は操作に実行ブロックを追加できないことです。

さらにブロック操作オブジェクトを作成し、それらに実行ブロックを追加できます。各ブロック操作は他とは別に開始されるため、実行ブロックの追加に関するルールは個別に評価されます。

通常、ブロック操作を作成し、必要な実行ブロックを追加してから、操作を操作キューにキューに入れます。操作がキューに入れられると、いつでも開始される可能性があります (依存関係の影響を受ける準備が整っている場合)。そのため、一度キューに入れられた実行ブロックを追加しようとしないことをお勧めします。

于 2014-07-26T02:11:00.420 に答える
3

操作が実行中または既に完了している間は、addExecutionBlock:を使用して実行ブロックを追加することはできません。それだけです。

于 2014-07-26T00:00:21.143 に答える