我正在设置一个计时器,以便在第二次通过后重置键盘扩展名的值。问题是我觉得以下调用阻碍了我的UI:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self resetDoubleTapBool];
})
是否存在异步方式,或者更好的方式?谢谢!
答案 0 :(得分:6)
dispatch_after()
调用本身不会阻止。在指定时间(或之后不久),该块将被提交到主队列。提交它不会阻止主线程。当主线程接下来运行其运行循环或在dispatch_main()
内空闲时,它将执行该块。
IF 您的-resetDoubleTapBool
方法花费了大量时间,这可能会阻碍您的用户界面。这与在主线程上运行的任何代码完全相同。它并非特定于dispatch_after()
或GCD的任何其他部分。
答案 1 :(得分:0)
此函数一直等到指定的时间,然后异步地将块添加到指定的队列。