我试图在除main之外的其他线程中运行显示链接,但它根本不起作用。我创建了一个像queue = DispatchQueue(label: "xyz")
这样的简单调度队列,然后像往常一样创建显示链接:
queue.async {
self.displayLink = CADisplayLink(target: self, selector: #selector(render))
self.displayLink.add(to: .current, forMode: .common)
}
选择器永远不会被调用。检查currentMode
中的RunLoop
后,我发现它为nil。我想念什么?
谢谢
答案 0 :(得分:0)
由于您的队列是非主队列的原因,当前运行循环不会自行触发。
您应该在添加 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()
}