如何从 Swift 中的主线程中关闭
Posted
技术标签:
【中文标题】如何从 Swift 中的主线程中关闭【英文标题】:How do I switch off from the main thread in Swift 【发布时间】:2020-10-09 23:13:03 【问题描述】:在 Swift 中,如果使用以下命令向主线程分派一个工作块:
DispatchQueue.main.async
// work
// myCallback()
在 myCallback 中放置 print(Thread.current)
表示它在主线程上运行。此时如何脱离主线程?或者,如果我看错了,我怎么知道我发送到主线程的某些工作何时完成?
【问题讨论】:
【参考方案1】:如果你想手动在后台线程上运行一些东西,你可以先获取具有指定服务质量类的全局系统队列,然后调用它的async code
方法来调度一个块执行:
例子:
print(Thread.current)
DispatchQueue.global(qos: .background).async
print(Thread.current)
日志:
<NSThread: 0x600003b60bc0>number = 1, name = main
<NSThread: 0x600003bcf340>number = 14, name = (null)
Dispatch Queue 的文档;
global(qos:)
的文档。
【讨论】:
【参考方案2】:如果要使用另一个线程,您可以使用以下。
let queue = DispatchQueue(label: "onde queue")
print(Thread.current)
queue.async
print(Thread.current)
DispatchQueue.main.async
print(Thread.current)
您必须创建一个队列来更改线程,但是当您在另一个线程上并且想要返回主线程时,您将使用 DispatchQueue.main.async
【讨论】:
以上是关于如何从 Swift 中的主线程中关闭的主要内容,如果未能解决你的问题,请参考以下文章
Swift”线程 1:PresentViewController 中的信号 SIGABRT