很多时候,我们需要开辟新线程,最近在看唐巧的iOS开发进阶,发现里面写的GCD的方法简单明了,易于使用,所以在这里整理一下,希望可以自己印象深刻一些,也能帮助一些想要了解GCD的宝宝,帮助到你要记得给个喜欢呦。
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//后台运行的代码
});
dispatch_async(dispatch_get_main_queue(), ^{
//回归主线程
});
下面这个dispatch在单例模式中经常用到
static dispatch_once_t once_t;
dispatch_once(&once_t, ^{
//一次性执行
});
double delayInSeconds = 2.0;//延迟的时间--延迟两秒执行
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^{
//执行完代码回归主线程
});
下面这个是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), ^{
//汇总结果
});
GCD常用的一些基本方法差不多就这几个,是不是看起来很简单呢,其实使用起来也很简单呢。