假设我有一个异步闭包,并调用了一个在其中编写的函数。这个函数是异步执行还是在主队列上执行?
AVCaptureStillImageOutput?.captureStillImageAsynchronously(from: videoConnection, completionHandler: {(sampleBuffer, error) in
self.myFunctionToDoSomething()
})
我想知道我的函数是否需要很长时间才能执行,它是否会通过在主队列上执行来阻止我的 UI?
另外,我在哪里可以找到有关此函数或任何其他 IOS 函数的完成处理程序的信息?这是我查看的页面,但它没有告诉我处理程序是否异步以及它在哪个队列上。
“异步”和“在主队列上执行”并不相互排斥。该myFunctionToDoSomething
声明将决定它是否是异步的,但是没有做什么特别的它会在哪个队列中执行captureStillImage...
的回调要求。您可以阅读文档以查看该队列是什么,但是如果您想myFunction
在特定队列上执行,则必须通过以下方式声明:
DispatchQueue.main.async {
self.myFunctionToDoSomething()
}
或者如果myFunction...
是异步的,或者需要很长时间才能执行:
DispatchQueue.global().async {
self.myFunctionToDoSomething()
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句