Creates a new dispatch block on the heap using an existing block and the given flags.
- iOS 8.0+
- macOS 10.10+
- Mac Catalyst 13.0+
- tvOS 9.0+
- watchOS 2.0+
Configuration flags for the block object. For possible values, see
_block _flags _t
Passing a value that is not a bitwise OR of valid flags results in
The block to create the dispatch block from.
The newly created dispatch block, or
The provided block is copied to the heap and retained by the newly created dispatch block.
The returned dispatch block is intended to be submitted to a dispatch queue with
dispatch and related functions, but may also be invoked directly. Both operations can be performed an arbitrary number of times but only the first completed execution of a dispatch block can be waited on with
dispatch or observed with
If the returned dispatch block is submitted to a dispatch queue, the submitted block instance is associated with the QoS class current at the time of submission, unless one of the following flags assigned a specific QoS class (or no QoS class) at the time of block creation:
The QoS class the block object is executed with also depends on the QoS class assigned to the queue and which of the following flags was specified or defaulted to:
DISPATCH(default for asynchronous execution)
_BLOCK _INHERIT _QOS _CLASS
DISPATCH(default for synchronous execution)
_BLOCK _ENFORCE _QOS _CLASS
If the returned dispatch block is submitted directly to a serial queue and is configured to execute with a specific QoS class, the system makes a best effort to apply the necessary QoS overrides to ensure that blocks submitted earlier to the serial queue are executed at that same QoS class or higher.
dispatch for more information.