Instance Property インスタンスプロパティ

completionBlock

The block to execute after the operation’s main task is completed. そのオペレーションのもつメインタスクが完了される後に遂行を遮断します。

Declaration 宣言

@property(copy) void (^completionBlock)(void);

Discussion 議論

The completion block takes no parameters and has no return value. 完了ブロックはパラメータを取りません、そして戻り値を持ちません。

The exact execution context for your completion block is not guaranteed but is typically a secondary thread. Therefore, you should not use this block to do any work that requires a very specific execution context. Instead, you should shunt that work to your application’s main thread or to the specific thread that is capable of doing it. For example, if you have a custom thread for coordinating the completion of the operation, you could use the completion block to ping that thread. あなたの完了ブロックに対する正確な遂行文脈は保証されません、しかし概してある2次的スレッドです。それゆえに、あなたはこのブロックを使うことで非常に特有な遂行文脈を要請するどんな仕事もすべきではありません。代わりに、あなたはその仕事を、あなたのアプリケーションのメインスレッドにまたはそれを行う資質がある特定のスレッドに押し付けるべきです。例えば、あなたがあるあつらえのスレッドをオペレーションの完了を調整するために持つならば、あなたは完了ブロックを使ってそのスレッドにpingできます。

The completion block you provide is executed when the value in the finished property changes to YES. Because the completion block executes after the operation indicates it has finished its task, you must not use a completion block to queue additional work considered to be part of that task. An operation object whose finished property contains the value YES must be done with all of its task-related work by definition. The completion block should be used to notify interested objects that the work is complete or perform other tasks that might be related to, but not part of, the operation’s actual task. あなたが提供する完了ブロックは、finishedプロパティの中の値がYESに変化する時に遂行されます。オペレーションの後に遂行する完了ブロックはそれがそれのタスクを終了してしまっていることを指し示すことから、あなたは、そのタスクの一部とみなされる追加的な仕事をキューに入れるために完了ブロックを使ってはいけません。それのfinishedプロパティが値YESを含むオペレーションオブジェクトは、それのタスクに関係した仕事の全てを当然ながら済まされなければなりません。完了ブロックは、その仕事が完了されることに興味を持つオブジェクトに通知するために、またはオペレーションのもつ実際のタスクと関係があるかもしれない、しかしその一部ではない、他のタスクを実行するために使われるべきです。

A finished operation may finish either because it was cancelled or because it successfully completed its task. You should take that fact into account when writing your block code. Similarly, you should not make any assumptions about the successful completion of dependent operations, which may themselves have been cancelled. 終了されたオペレーションは、それが取り消されたからまたはそれがうまくそれのタスクを完了したからのどちらかで終了するかもしれません。あなたは、あなたのブロックコードを書いている場合はその事実を考慮すべきです。同様に、あなたは依存オペレーションそれらの成功裏の完了について何らかの仮定をすべきではありません、それら自身取り消されるかもしれません。

In iOS 8 and later and macOS 10.10 and later, this property is set to nil after the completion block begins executing. iOS 8以降およびmacOS 10.10以降では、このプロパティは、完了ブロックが遂行を開始後にnilに設定されます。

See Also 参照

Executing the Operation オペレーションを遂行する