我一直在我的应用程序中使用它来在后台运行代码,但我遇到了一些奇怪的性能滞后。有时我实际上需要指定大于0.0
的时间,但通常需要运行NOW
这是最好的做法还是让我自己失败?
dispatch_queue_t dqt = dispatch_queue_create("com.myapp.iphone.fetchRecentContent", NULL);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.0 * NSEC_PER_SEC), dqt, ^{
...
});
答案 0 :(得分:3)
你所拥有的应该工作得很好,但下面是一个更清洁的版本。作为奖励,我包含了发送回主线程所需的代码(如果您在后台执行一些繁重工作并且需要在完成后更新UI,则相当常见)。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
// background code here
dispatch_async(dispatch_get_main_queue(), ^(void){
// UI thread code here
});
});