Instance Method


Invokes the passed-in block on the main thread.


func continueAsynchronousWorkOnMainThread(_ block: @escaping () -> Void)



The block to be invoked.


If the main thread is blocked by an invocation of performActivity(withSynchronousWaiting:using:) or performSynchronousFileAccess(_:), this method interrupts that blocking to invoke the block, and then resumes blocking when the invocation of the block has returned. Invocations of this method always return before the passed-in block is invoked.

You can invoke this method when work is being done on a non-main thread and part of the work must be continued on the main thread. For example, save(to:ofType:for:completionHandler:) uses this method when it has just completed the actual writing of the file during asynchronous saving and, to finish the saving operation, must invoke updateChangeCount(withToken:for:) and other methods on the main thread.

This method can be invoked on any thread.

See Also


func continueActivity(() -> Void)

Invokes the passed-in block to avoid a deadlock if performActivity(withSynchronousWaiting:using:) is being invoked recursively.

func performActivity(withSynchronousWaiting: Bool, using: (@escaping () -> Void) -> Void)

Waits for any work scheduled by previous invocations of this method to complete, then invokes the passed-in block.

func performAsynchronousFileAccess((@escaping () -> Void) -> Void)

Waits for any scheduled file access to complete but without blocking the main thread, then invokes the passed-in block.

func performSynchronousFileAccess(() -> Void)

Waits for any scheduled file access to complete, then invokes the passed-in block.