这段代码在后台运行块有多好?

时间:2015-02-05 19:11:25

标签: ios objective-c asynchronous

我一直在我的应用程序中使用它来在后台运行代码,但我遇到了一些奇怪的性能滞后。有时我实际上需要指定大于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, ^{
    ...
});

1 个答案:

答案 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
            });
        });