我试图在main以外的线程中运行一个显示链接,但它根本不起作用。我像queue = DispatchQueue(label: "xyz")一样创建了一个简单的分派队列,然后像往常一样创建显示链接:
queue.async {
self.displayLink = CADisplayLink(target: self, selector: #selector(render))
self.displayLink.add(to: .current, forMode: .common)
}选择器不会被调用。在检查RunLoop的currentMode时,我发现它是空的。我遗漏了什么?
谢谢
发布于 2021-05-05 14:49:29
由于你的队列是非main的,所以当前的run循环不会自动触发。
您应该在添加displayLink之后手动调用current.run()。
queue.async {
self.displayLink = CADisplayLink(target: self, selector: #selector(render))
let current = RunLoop.current
self.displayLink.add(to: current, forMode: .common)
current.run()
}https://stackoverflow.com/questions/55979229
复制相似问题