Swift 从异步闭包内部调用的函数也是异步的?

Swift Function called from inside Asynchronous closure also Asynchronous?

假设我有一个异步闭包,我调用了一个我在其中编写的函数。这个函数是异步执行还是在主队列执行?

AVCaptureStillImageOutput?.captureStillImageAsynchronously(from: videoConnection, completionHandler: {(sampleBuffer, error) in

      self.myFunctionToDoSomething()          
})

我想知道如果我的函数需要很长时间才能执行,它会通过在主队列上执行来阻塞我的UI吗?

此外,我在哪里可以找到有关此函数或任何其他 IOS 函数的完成处理程序的信息?这是我查看的页面,但它没有告诉我处理程序是否异步以及它在哪个队列上。

https://developer.apple.com/reference/avfoundation/avcapturestillimageoutput/1387374-capturestillimageasynchronously

"Asynchronous" 和 "executed on the main queue" 并不互斥。 myFunctionToDoSomething 声明将确定它是否是异步的,但无需执行任何特殊操作,它将在调用 captureStillImage... 的回调的任何队列上执行。您可以阅读文档以查看该队列是什么,但是如果您希望 myFunction 在特定队列上执行,您必须通过以下方式声明:

DispatchQueue.main.async {
    self.myFunctionToDoSomething()
}

或者如果myFunction...是异步的,或者会花很长时间执行:

DispatchQueue.global().async {
    self.myFunctionToDoSomething()
}