gpt4 book ai didi

objective-c - 了解 dispatch_async

转载 作者:IT老高 更新时间:2023-10-28 12:14:34 29 4
gpt4 key购买 nike

我对这段代码有疑问

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData* data = [NSData dataWithContentsOfURL:
kLatestKivaLoansURL];
[self performSelectorOnMainThread:@selector(fetchedData:)
withObject:data waitUntilDone:YES];
});

这段代码的第一个参数是

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) 

我们是否要求这段代码在全局队列上执行串行任务,其定义本身是它返回给定优先级的全局并发队列?

在主队列上使用 dispatch_get_global_queue 有什么优势?

我很困惑。请您帮助我更好地理解这一点。

最佳答案

在主队列上使用默认队列的主要原因是在后台运行任务。

例如,如果我正在从 Internet 下载文件并且我想更新用户的下载进度,我将在优先级默认队列中运行下载并异步更新主队列中的 UI。

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
//Background Thread
dispatch_async(dispatch_get_main_queue(), ^(void){
//Run UI Updates
});
});

关于objective-c - 了解 dispatch_async,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283652/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com