1.系统提供的dispatch方法

为了方便的使用GCD。苹果提供了一些方法方便我们将BLOCK放在主线程或者后台程序运行。或者延后运行。

    //后台运行:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//something
});
//主线程运行
dispatch_async(dispatch_get_main_queue(), ^{
//something
});
//一次运行完
static dispatch_once_t once;
dispatch_once(&once, ^{
//something
});
//延迟2秒运行
double delayInSeconds = 2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^{
//something
});

dipatch_queue_t也能够自定义。通过dispatch_queue_creat方法实现,比如:

    dispatch_queue_t my_queue = dispatch_queue_create("myQueue", NULL);
dispatch_async(my_queue, ^{
//something
});
dispatch_release(my_queue);

另外GCD另一些高级使用方法,比方,让后台两个线程并行运行,然后等两个线程都结束后,在汇总运行结果:

    dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//并行运行的线程1
});
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//并行运行的线程2
});
dispatch_group_notify(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//汇总结果
});

2.后台执行

   使用block能够让程序在后台较长久的执行,曾经的时候应该被按HOME键之后,最多仅仅有5秒钟的后台执行时间,可是应用能够调用UIApllication的beginBackgroundTaskWithExoirationHandler方法,让应用程序最多有10分钟的时间在后台执行,这个时候能够做清理缓存,发送统计数据等等。
//AppDelegate.h文件
@property (nonatomic, assign) UIBackgroundTaskIdentifier backgroundUpdateTask;
//APPDelegate.m
- (void)applicationDidEnterBackground:(UIApplication *)application { [self beginBackgrooundUpdateTask];
//在这里加上你须要长久执行的代码
[self endBackgrooundUpdateTask];
} -(void)beginBackgrooundUpdateTask
{
self.backBackgroundUpdateTask = [[UIApplication sharedApplication]beginBackgroundTaskWithExpirationHandler:^{
[self endBackgrooundUpdateTask];
}];
} -(void)endBackgrooundUpdateTask
{
[[UIApplication sharedApplication] endBackgroundTask:self.backBackgroundUpdateTask];
self.backBackgroundUpdateTask = UIBackgroundTaskInvalid;
}

小胖说事20--------GCD笔记的更多相关文章

  1. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  2. GCD笔记

    GCD笔记http://www.cocoachina.com/applenews/devnews/2013/1210/7506_2.html1. 全称Grand Central Dispatch2. ...

  3. iOS阶段学习第20天笔记(MRC内存管理)

    iOS学习(OC语言)知识点整理 一.OC中的内存管理 1)概念:内存管理的对象为所有继承了NSObject的对象,对基本数据(如:int .float.double...)无效      OC中采用 ...

  4. 小胖说事24-----property's synthesized getter follows Cocoa naming convention for returning 'owned' objec

    今天在给类的属性命名的时候,用了newValue.就给报错:property's synthesized getter follows Cocoa naming convention for retu ...

  5. 《it项目管理那些事》学习笔记

    此书适合:计算及相关专业的学生,想成为测试工程师.软件工程师.进入项目经理的人,或者经验丰富的it经理人. 之所以称为学习笔记,是加上我从百度搜到一些在看书过程中不明白的it语,作为菜鸟的我,得多看看 ...

  6. kbmMW 5.06.20试用笔记

    1.kbmMWConfiguration自动备份配置文件的问题还没有修正. 下面是以前写过的内容,再一次在新闻组中提出这个问题: kbmMW提供一个强大的配置信息管理对象,前期译过这个对象的介绍,在使 ...

  7. 小胖说事35-----Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer posi

    2011-06-11 15:19:17.167 ***[930:707] *** Terminating app due to uncaught exception 'CALayerInvalidGe ...

  8. 网络安装archlinux(2012.8.20)笔记

    周末闲极无聊,把烂笔记本翻出来想装个Archlinux,发现USB不能启动,光驱也挂了,只好网络安装. 我先后试了两种安装方式,一种纯互联网启动,安装,一种局域网启动,再互联网安装.分别说说. 不管哪 ...

  9. 20.python笔记之装饰器

    装饰器 装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作. 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插 ...

随机推荐

  1. python - 接口自动化 - 接口测试基础知识

    # -*- coding:utf-8 -*- '''@project: jiaxy@author: Jimmy@file: study_接口测试基础知识一.py@ide: PyCharm Commun ...

  2. maven项目打包jar,含有依赖jar

    在pom文件中添加一下插件 <plugin> <artifactId>maven-assembly-plugin</artifactId> <configur ...

  3. java EE技术体系——CLF平台API开发注意事项(4)——API生命周期治理简单说明

    文档说明 截止日期:20170905,作者:何红霞,联系方式:QQ1028335395.邮箱:hehongxia626@163.com 综述 有幸加入到javaEE技术体系的研究与开发,也得益于大家的 ...

  4. C++ Programming with TDD之二:CppUTest单元测试

    在之前一篇C++ Programming with TDD博客中,我带给大家gmock框架的简介(地址戳着里),今天我们继续本系列,带个大家C++中的单元测试框架CppUTest的介绍. CppUTe ...

  5. 【Luogu】P2303Longge的问题(莫比乌斯反演)

    就让我这样的蒟蒻发一个简单易想的题解吧!!! 这题我一开始一看,woc这不是莫比乌斯反演么,推推推,推到杜教筛,输出结果一看不对 emmm回来仔细想想……woc推错了? 然后撕烤半天打了个暴力,A了 ...

  6. BZOJ1297 [SCOI2009]迷路 【矩阵优化dp】

    题目 windy在有向图中迷路了. 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1. 现在给出该有向图,你能告诉windy总共有多少种不同的路径吗? 注意: ...

  7. docker (centOS 7) 使用笔记1

    1. docker配置 初次在安装完docker后,初始化配置 copy默认的docker.service后,重启服务,会在/etc/systemd/system/multi-user.target. ...

  8. 【bzoj1717】[Usaco2006 Dec]Milk Patterns 产奶的模式 SA+二分

    Description 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个“模式”. John的牛奶按质 ...

  9. [POJ2417]Discrete Logging(指数级同余方程)

    Discrete Logging Given a prime P, 2 <= P < 2 31, an integer B, 2 <= B < P, and an intege ...

  10. Linux System Programming 学习笔记(一) 介绍

    1. Linux系统编程的三大基石:系统调用.C语言库.C编译器 系统调用:内核向用户级程序提供服务的唯一接口.在i386中,用户级程序执行软件中断指令 INT n 之后切换至内核空间 用户程序通过寄 ...