首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DispatchQueue中的CADisplayLink

DispatchQueue中的CADisplayLink
EN

Stack Overflow用户
提问于 2019-05-04 11:36:00
回答 1查看 372关注 0票数 0

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

代码语言:javascript
复制
queue.async {
  self.displayLink = CADisplayLink(target: self, selector: #selector(render))
  self.displayLink.add(to: .current, forMode: .common)
}

选择器不会被调用。在检查RunLoopcurrentMode时,我发现它是空的。我遗漏了什么?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-05-05 14:49:29

由于你的队列是非main的,所以当前的run循环不会自动触发。

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

代码语言:javascript
复制
queue.async {
  self.displayLink = CADisplayLink(target: self, selector: #selector(render))
  let current = RunLoop.current
  self.displayLink.add(to: current, forMode: .common)
  current.run()
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55979229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档