我正在设置一个计时器,以便在经过一秒钟后重置键盘扩展的值。问题是我觉得以下调用正在拖延我的 UI:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
    [self resetDoubleTapBool];
})

有没有一种异步的方式来做到这一点,或者一般来说有更好的方式?谢谢!

最佳答案

dispatch_after() 调用本身不会阻塞。在指定时间(或之后),区块将被提交到主队列。提交它不会阻塞主线程。当主线程接下来运行其运行循环或在 dispatch_main() 内空闲时,它将执行该块。

如果 您的 -resetDoubleTapBool 方法需要任何可观的时间,这可能会拖延您的 UI。这与在主线程上运行的任何代码相同。它不是特定于 dispatch_after() 或 GCD 的任何其他部分。

关于ios - dispatch_after 会阻塞主线程吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28382990/

10-10 22:25