iOS开发进阶(iOS开发实战:GCD)summary
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发进阶(iOS开发实战:GCD)summary相关的知识,希望对你有一定的参考价值。
多线程:我们一般把耗时操作放到子线程来执行,然后主线程只做UI操作
GCD是苹果开发的一个多核编程的解决办法,和(NSThread、NSOperationQueue、NSInvocationOperation)多线程技术方案相比,使用起来更加简单和方便
//网络显示图片
self.indicator.hidden = NO;
[self.indicator startAnimating];
//进入异步线程
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//异步下载图片
NSData * data = [NSData dataWithContentsOfURL:url];
//网络请求之后进入主线程
dispatch_async(dispatch_get_main_queue(), ^{
//关闭loading
[self.indicator stopAnimating];
self.indicator.hidden = YES;
if
(data) {
//显示图片
self.imageView.image = [UIImage imageWithData:data];
}
});
});
// 延迟执行:
double
delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(
void
){
// code to be executed on the main queue after delay
});
利用GCD并行多个线程并且等待所有线程结束之后再执行其它任务
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{
// 并行执行的线程一
});
dispatch_group_async(group, dispatch_get_global_queue(0,0), ^{
// 并行执行的线程二
});
dispatch_group_notify(group, dispatch_get_global_queue(0,0), ^{
// 汇总结果
});
以上是关于iOS开发进阶(iOS开发实战:GCD)summary的主要内容,如果未能解决你的问题,请参考以下文章