Kin*_*gon 3 multithreading objective-c grand-central-dispatch ios dispatch-async
我正在设置一个计时器,以便在第二次通过后我重置键盘扩展的值.问题是我觉得以下调用阻止了我的UI:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self resetDoubleTapBool];
})
Run Code Online (Sandbox Code Playgroud)
有一种异步方式可以做到这一点,或者更好的方式吗?谢谢!
该dispatch_after()调用本身不会阻止.在指定时间(或之后不久),该块将被提交到主队列.提交它不会阻止主线程.当主线程接下来运行其运行循环或在其中空闲时dispatch_main(),它将执行该块.
如果您的-resetDoubleTapBool方法花费了相当多的时间,那可能会阻碍您的UI.这与在主线程上运行的任何代码完全相同.它并非特定于dispatch_after()GCD或GCD的任何其他部分.
| 归档时间: |
|
| 查看次数: |
2482 次 |
| 最近记录: |