iOS 线程之GCD的高级用法
之前的一篇关于线程的blog已经为大家介绍了GCD的简单使用方式及例子说明,今天由于项目中有特殊的应用GCD的实例,为大家介绍两种特殊需求的使用GCD的方法。
目的:实现一件事情做完,再做下一件事情,确保函数的执行周期。
解决方案:提供以下2种解决方案
1、创建barrier等待线程
dispatch_async(dispatch_get_main_queue(), ^{
[self ActionFirst];
});
dispatch_barrier_async(dispatch_get_main_queue(), ^{
[self ActionNext];
});
2、创建group线程组(即 队列queue)
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_main_queue(), ^{
[self ActionFirst];
});
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
[self ActionNext];
});
出现问题的代码如下:
-(void)example
{
[self ActionFirst];
[self ActionNext];
}
产生原因:调用example函数时,由于ActionFirst函数执行的时间比较长,当ActionNext函数执行完时,ActionFirst可能还没有执行完,导致执行ActionNext时出现崩溃的现象。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。