DispatchQueue中的CADisplayLink

时间:2019-05-04 03:36:00

标签: ios grand-central-dispatch cadisplaylink dispatch-queue

我试图在除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。我想念什么?

谢谢

1 个答案:

答案 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()
}