class var main: OperationQueue
class var current: OperationQueue?
Availability 有効性
Technology
class OperationQueue : NSObject
An operation queue invokes its queued Operation
objects based on their priority and readiness. After you add an operation to a queue, it remains in the queue until the operation finishes its task. You can’t directly remove an operation from a queue after you add it.
Note 注意
Operation queues retain operations until the operations finish, and queues themselves are retained until all operations are finished. Suspending an operation queue with operations that aren’t finished can result in a memory leak.
For more information about using operation queues, see the Concurrency Programming Guide.
An operation queue organizes and invokes its operations according to their readiness, priority level, and interoperation dependencies. If all of the queued operations have the same queue
and the is
property returns true
, the queue invokes them in the order you added them. Otherwise, the operation queue always invokes the operation with the highest priority relative to the other ready operations.
However, don’t rely on queue semantics to ensure a specific execution order of operations because changes in the readiness of an operation can change the resulting execution order. Interoperation dependencies provide an absolute execution order for operations, even if those operations are located in different operation queues. 相互作用依存関係は、絶対的な遂行順序をオペレーションそれらに対して提供します、たとえそれらオペレーションが異なるオペレーションキューの中に位置してもです。 An operation object isn’t ready to run until all of its dependent operations have finished running.
For details on how to set priority levels and dependencies, see Managing Dependencies in Operation
.
優先度レベルと依存関係を設定する方法に関する詳細として、依存関係を管理するをOperation
で見てください。
Finishing its task doesn’t necessarily mean that the operation performed that task to completion; an operation can also be canceled. Canceling an operation object leaves the object in the queue but notifies the object that it should stop its task as quickly as possible. For currently executing operations, this means that the operation object’s work code must check the cancellation state, stop what it is doing, and mark itself as finished. For operations that are queued but not yet executing, the queue must still call the operation object’s start()
method so that it can processes the cancellation event and mark itself as finished.
それのタスクを終了することは、必ずしもオペレーションがそのタスクの実行を完了したことを意味しません;オペレーションはまた取り消されることも可能です。あるオペレーションオブジェクトを取り消すことは、そのオブジェクトをキューの中にそのままにしておきます、しかしそのオブジェクトに、それがそれのタスクを可能な限り素早く停止すべきであることを通知します。現在遂行中のオペレーションに対して、これはオペレーションオブジェクトのもつ作業コードがキャンセル状態を確認して、それがしている何かを停止して、そしてそれ自身を終了したと印しなければならないことを意味します。キューに入れられたがまだ遂行状態になっていないオペレーションそれらに対して、キューは依然としてそのオペレーションオブジェクトのもつstart()
メソッドを呼びださなければなりません、そうすることでそれはキャンセルイベントを処理してそれ自身を終了したと印できます。
Note 注意
Canceling an operation causes the operation to ignore any dependencies it may have.
あるオペレーションを取り消すことは、そのオペレーションに、それが持つかもしれないあらゆる依存関係を無視させます。
This behavior makes it possible for the queue to invoke the operation’s start()
method as soon as possible. The start()
method, in turn, moves the operation to the finished state so that it can be removed from the queue.
start()
メソッドは、今度は、そのオペレーションを終了状態に移し、それでそれはキューから取り除かれることができます。
For more information about operation cancellation, see Responding to the Cancel Command in Operation
.
オペレーション取り消しについてのさらなる情報として、取り消しコマンドに応答するをOperation
で見てください。
The Operation
class is key-value coding (KVC) and key-value observing (KVO) compliant.
Operation
クラスは、キー値コーディング(KVC)とキー値監視(KVO)準拠です。
You can observe these properties to control other parts of your application. To observe the properties, use the following key paths:
プロパティを監視するには、以下のキーパスを使ってください:
operations
— Read-only
operation
— Read-only
max
— Readable and writable
is
— Readable and writable
name
— Readable and writable
Although you can attach observers to these properties, don’t use Cocoa bindings to bind these properties to elements of your application’s user interface. Code associated with your user interface typically must run only in your app’s main thread. However, KVO notifications associated with an operation queue may occur in any thread. しかしながら、あるオペレーションキューと結びつけられたKVO通知はどんなスレッドに発生してもかまいません。
For more information about KVO and how to attach observers to an object, see the Key-Value Observing Programming Guide.
You can safely use a single Operation
object from multiple threads without creating additional locks to synchronize access to that object.
Operation queues use the Dispatch framework to initiate the execution of their operations. オペレーションキューは、Dispatchフレームワークを使ってそれらのオペレーションの遂行に着手します。 As a result, queues always invoke operations on a separate thread, regardless of whether the operation is synchronous or asynchronous.
class var main: OperationQueue
class var current: OperationQueue?
func addOperation (Operation)
func addOperations ([Operation], waitUntilFinished : Bool)
func addOperation (() -> Void)
func addBarrierBlock (() -> Void)
func cancelAllOperations ()
func waitUntilAllOperationsAreFinished ()
var operations: [Operation]
var operationCount : Int
var qualityOfService : QualityOfService
var maxConcurrentOperationCount : Int
class let defaultMaxConcurrentOperationCount : Int
var progress: Progress
var isSuspended : Bool
var name: String?
var underlyingQueue : DispatchQueue?
func schedule(after: OperationQueue.SchedulerTimeType, tolerance: OperationQueue.SchedulerTimeType.Stride, options: OperationQueue.SchedulerOptions?, () -> Void)
func schedule(after: OperationQueue.SchedulerTimeType, interval: OperationQueue.SchedulerTimeType.Stride, tolerance: OperationQueue.SchedulerTimeType.Stride, options: OperationQueue.SchedulerOptions?, () -> Void) -> Cancellable
func schedule(options: OperationQueue.SchedulerOptions?, () -> Void)
var now: OperationQueue.SchedulerTimeType
var minimumTolerance : OperationQueue.SchedulerTimeType.Stride
struct OperationQueue.SchedulerTimeType
struct OperationQueue.SchedulerOptions
class Operation
class BlockOperation