0

我正在尝试在除主线程之外的线程中运行显示链接,但它根本不起作用。我创建了一个简单的调度队列queue = DispatchQueue(label: "xyz"),然后像往常一样创建显示链接:

queue.async {
  self.displayLink = CADisplayLink(target: self, selector: #selector(render))
  self.displayLink.add(to: .current, forMode: .common)
}

选择器永远不会被调用。检查currentModeRunLoop我发现它是零。我错过了什么?

谢谢

4

1 回答 1

-1

由于您的队列是非主队列,当前运行循环不会自行触发。

您应该current.run()在添加 displayLink 后手动调用。

queue.async {
  self.displayLink = CADisplayLink(target: self, selector: #selector(render))
  let current = RunLoop.current
  self.displayLink.add(to: current, forMode: .common)
  current.run()
}
于 2021-05-05T06:49:29.033 回答