ios GCD一些使用方法

 1 - (void)GCDMethed{
 2     // 后台执行
 3     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
 4
 5         // 后台执行的操作
 6         NSLog(@"后台操作");
 7     });
 8
 9     // 主线程执行
10     dispatch_async(dispatch_get_main_queue(), ^{
11
12         // 主线程执行的操作
13         NSLog(@"主线程操作");
14     });
15
16
17     // 一次性执行
18     for (int i=0; i<2; i++) {
19         static  dispatch_once_t onceToken;
20         dispatch_once(&onceToken, ^{
21             // 代码执行一次
22             NSLog(@"代码执行一次");
23         });
24     }
25
26 //    延迟2秒执行
27     double delayInSeconds = 2.0;
28     dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
29     dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
30         NSLog(@"延迟了2秒执行");
31     });
32
33     // 自定义 dispatch_queue_t
34     dispatch_queue_t urls_queue = dispatch_queue_create("blog.devtang.com", NULL);
35     dispatch_queue_t urls_queue2 = dispatch_queue_create("TEST",DISPATCH_QUEUE_CONCURRENT); // 并行的队列 DISPATCH_QUEUE_SERIAL 穿行队列
36     dispatch_async(urls_queue, ^{
37
38     });
39 //    dispatch_release(urls_queue);  ARC 不需要
40
41
42     // 合并汇总结果
43
44     dispatch_group_t group  = dispatch_group_create();
45     dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
46             // 并行执行的线程一
47     });
48     dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
49             // 并行执行的线程二
50     });
51     dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
52             // 汇总结果
53     });
54
55     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
56
57         dispatch_async(dispatch_get_main_queue(), ^{
58
59         });
60     });
61
62 }
时间: 2024-10-12 17:22:20

ios GCD一些使用方法的相关文章

iOS GCD中级篇 - dispatch_group的理解及使用

前文我们讲了GCD基础篇,以及同步.异步,并发.并行几个概率的理解. 参考链接: iOS GCD基础篇 - 同步.异步,并发.并行的理解 现在讲一下dispatch_group的概念以及几种场景下的使用 1.关于dispatch_group 把一组任务提交到队列中,这些队列可以不相关,然后监听这组任务完成的事件. 最常见的几个方法: 1.dispatch_group_create创建一个调度任务组 2.dispatch_group_async 把一个任务异步提交到任务组里 3.dispatch_

ios中集合遍历方法的比较和技巧

本文原文发表自我的[自建博客],cnblogs同步发表,格式未经调整,内容以原博客为准 我是前言 集合的遍历操作是开发中最常见的操作之一,从C语言经典的for循环到利用多核cpu的优势进行遍历,开发中ios有若干集合遍历方法,本文通过研究和测试比较了各个操作方法的效率和优略势,并总结几个使用集合遍历时的小技巧. ios中常用的遍历运算方法 遍历的目的是获取集合中的某个对象或执行某个操作,所以能满足这个条件的方法都可以作为备选: 经典for循环 for in (NSFastEnumeration)

iOS GCD的常见API使用指南

iOS GCD使用指南 Grand Central Dispatch(GCD)是异步执行任务的技术之一.一般将应用程序中记述的线程管理用的代码在系统级中实现.开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务.由于线程管理是作为系统的一部分来实现的,因此可统一管理,也可执行任务,这样就比以前的线程更有效率. Dispatch Queue Dispatch Queue是用来执行任务的队列,是GCD中最基本的元素之一. Dispatch

iOS GCD学习

GCD概念:Grand Central Dispatch 1.queue 队列 dispatch queue 分发队列 2.task  任务 3.thread 线程 task 是一个一个单独的任务(方法,函数,block) queue里存放的是一个或者多个task thread 为了保证task能顺利执行,queue会开辟适当的thread,在开辟的thread里面执行task queue分两种: 1.serialqueue(串行队列) 特点:任务先进先出.排在前面任务先执行,执行之后后面的任务

[ios]ios的延迟执行方法

1.最直接的方法performSelector:withObject:afterDelay: 这种方法的缺点:每次要为延时写一个方法 2.使用类别,用BOLCK执行 [代码]c#/cpp/oc代码: 01 @implementation NSObject (PerformBlockAfterDelay) 02   03 - (void)performBlock:(void (^)(void))block 04           afterDelay:(NSTimeInterval)delay

ios系统铃声调用方法

首先,这里我要说明这里并不是真正调用系统内部自带的铃声,因为苹果是不允许开发者调用的,没有给开发者接口:如果调用了就无法上线的!那为什么AppStore里面还有那么多app显示的效果是调用系统的铃声一样呢?为什么就能上线呢?其实不然,他们是使用了系统一样的铃声!也就说他们录制和系统铃声相似,然后包含进他们的bundle中来实现的. 所以,我们想要实现调用系统铃声的效果,只能通过这个途径:把音频文件捆绑经我们的bundle中来调用,播放! 给一个网址,里面好多苹果系统铃声(ios8的也有啦....

IOS GCD

UIButton * btn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)]; [btn setTitle:@"default"forState:UIControlStateNormal]; btn.backgroundColor = [UIColorblackColor]; [self.view addSubview:btn]; //情况一 dispatch_async(dispatch_get_glo

iOS开发——实用篇&amp;提高iOS开发效率的方法和工具

提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时在使用AppCode等其他的IDE,在这里我主要介绍Xcode中提升开发效率的方法. 1.善用快捷键 快捷键是开发中必不可少的,当你善于使用快捷键的时候,十指在键盘上飞舞,那画面太美,我不敢想象. 常用快捷键操作 2.常用代码片段 开发中有一些常用的代码,可以放到代码片段中,然后下次你就可以使用快捷

iOS开发 UITableView的方法和属性总结

本文描述UITableView的各种方法,属性,委托以及数据源.本文的目的只是总结UITableView的用法,详细的例子另撰文描述. 1 数据源  UITableViewDataSource协议 01 返回组(节)的个数,默认是返回1,如果只有1组数据,可以不用实现该方法. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 02 返回某一组的行数,该组由section的值决定 - (NSInteger)table