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

巴卡洛洛

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

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

      self.myFunctionToDoSomething()          
})

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

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

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

爬行者说话

“异步”和“在主队列上执行”并不相互排斥。myFunctionToDoSomething声明将决定它是否是异步的,但是没有做什么特别的它会在哪个队列中执行captureStillImage...的回调要求。您可以阅读文档以查看该队列是什么,但是如果您想myFunction在特定队列上执行,则必须通过以下方式声明:

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

或者如果myFunction...是异步的,或者需要很长时间才能执行:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章