簡體   English   中英

DispatchQueue 中的 CADisplayLink

[英]CADisplayLink in a DispatchQueue

我正在嘗試在 main 以外的線程中運行顯示鏈接,但它根本不起作用。 我創建了一個簡單的調度隊列,如queue = DispatchQueue(label: "xyz")然后我像往常一樣創建顯示鏈接:

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

選擇器永遠不會被調用。 在檢查currentModeRunLoop我看到它為零。 我錯過了什么?

謝謝

由於您的隊列是非主隊列的原因,當前的運行循環不會自行觸發。

您應該在添加 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()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM