我对这段代码有疑问
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
});
});
https://stackoverflow.com/questions/16283652/
相关文章:
ios - 将 NSString 转换为 NSDate(然后再返回)
ios - 从 "bouncing"垂直停止 UIWebView?
objective-c - 实现 API 时如何避免在 block 中捕获 self ?
ios - 卸载应用程序时删除钥匙串(keychain)项目
iphone - 如何在我的 iPhone 应用程序中使用 NSError?
objective-c - 开始使用 instancetype 而不是 id 会有好处吗?
ios - 在一个 UITableViewCell 上隐藏分隔线