线程GCD
#import "ViewController.h"
@interfaceViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
UIImageView *imageview1 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 40, 100, 100)];
[self.view addSubview:imageview1];
UIImageView *imageview2 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 150, 100, 100)];
[self.view addSubview:imageview2];
UIImageView *imageview3 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 260, 100, 100)];
[self.view addSubview:imageview3];
UIImageView *imageview4 = [[UIImageView alloc]initWithFrame:CGRectMake(30, 370, 100, 100)];
[self.view addSubview:imageview4];
dispatch_async(dispatch_get_global_queue(0, 0), ^{
NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.yooyoo360.com/photo/2009-1-1/20090112132752467.jpg"]];
UIImage *image = [UIImage imageWithData:data];
dispatch_async(dispatch_get_main_queue(), ^{
imageview1.image = image;
});
});
//创建组:用于存放耗时操作
dispatch_group_t group = dispatch_group_create();
__block UIImage *image1,*image2,*image3;
//将操作封装进组,第一个参数代表要存放操作的组名,第二个参数代表操作队列,block执行耗时操作
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://pic2.ooopic.com/10/81/58/62bOOOPICce.jpg"]];
image1 = [UIImage imageWithData:data];
});
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.downsc.com/vector_pic/shiliang_iecool/5/3/b_img/14430.jpg"]];
image2 = [UIImage imageWithData:data];
});
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:@"http://www.downsc.com/vector_pic/shiliang_iecool/5/2/b_img/13788.jpg"]];
image3 = [UIImage imageWithData:data];
});
//监听一组操作,第一个参数代表要监听的组名,第二个参数代表一组操作完全结束后跳转到哪个队列,一般跳到主线程(dispatch_get_main_queue),block执行要进行的操作(一般用来更新UI),注意:此方法在组中的所有操作执行完毕后调用
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
imageview2.image = image1;
imageview3.image = image2;
imageview4.image = image3;
});
}

线程GCD的更多相关文章
- iOS 开发线程 gcd
基础知识: 下午9:09 一.基础概念 1.什么是GCD 全称是Grand Central Dispath 纯C语言编写,提供非常多且强大的函数,是目前推荐的多线程开发方法,NSOperation ...
- iOS-多线程-GCD
一. 名词解释: 1. 进程和线程 进程是指在系统中正在运行的一个应用程序.每个进程之间都是独立的,每个进程均运行在期专用而且受到保护的内存空间中. 线程是指一个进程想要执行任务,就必须要有线程.线程 ...
- OC-多线程GCD的使用细节
1>GCD,全称Grand Central Dispatch,”牛逼的中枢调度器”,纯C语言,提供了非常多强大的函数2>GCD优势:(1)GCD是苹果公司为多核的并行运算提出的解决方案(2 ...
- iOS中的多线程及GCD
多线程中的一些概念 //任务:代码段 方法 线程就是执行这些任务 //NSThread类 创建线程 执行线程 [NSThread isMainThread]//判断是否是主线程 #import & ...
- iOS开发-GCD和后台处理
一些生命周期函数的调用时间 打开应用时,调用 applicationWillEnterForeground: applicationDidBecomeActive: 按Home键,调用 applica ...
- IOS多线程 总结 -------------核心代码(GCD)
//NSObject //在子线程中执行代码 // 参数1: 执行的方法 (最多有一个参数,没有返回值) //参数2: 传递给方法的参数 [self performSelectorInBackgrou ...
- GCD 的初步认识
1.什么是 GCD? GCD为Grand Central Dispatch的缩写 (GCD)是Apple开发的一个多核编程的较新的解决方法.它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统 ...
- iOS 多线程 简单学习NSThread NSOperation GCD
1:首先简单介绍什么叫线程 可并发执行的,拥有最小系统资源,共享进程资源的基本调度单位. 共用堆,自有栈(官方资料说明iOS主线程栈大小为1M,其它线程为512K). 并发执行进度不可控,对非原子操作 ...
- block ,GCD(转)
原文:http://blog.sina.com.cn/s/blog_45e2b66c01010dhd.html 1.GCD之dispatch queue http://www.cnblogs.com/ ...
随机推荐
- java 单例(懒汉式)
该示例考虑了懒汉式单例的线程安全问题
- StarkSoft题库管理系统(二)--生成word格式试卷
一.功能介绍 1.自定义试题库管理系统目录.难易程度,题型,知识库等. 2.试题录入. 3.强大的试题编辑功能,并与通常应用编辑工具有共通. 4.灵活的试卷构造功能,用户可自定 ...
- WordPress目录文件结构详细说明
根目录 |-wp-admin | |-css | |-images | |-includes | |-js | |-maint | |-network | |-user |-wp-content | ...
- Mysql慢查询和慢查询日志分析
Mysql慢查询和慢查询日志分析 众所周知,大访问量的情况下,可添加节点或改变架构可有效的缓解数据库压力,不过一切的原点,都是从单台mysql开始的.下面总结一些使用过或者研究过的经验,从配置以 ...
- 使用Jackson解析Json示例
原文http://blog.csdn.net/gebitan505/article/details/17005735 custom.json: { "country":&q ...
- 《javascript》高级程序设计——类型转换错误
容易发生类型转换错误的另一个地方,就是流控制语句.像if之类的语句在确定下一步操作之前,会自动把任何值转换成布尔值.尤其是if语句,如果使用不当,最容易出错.来看下面的例子. function con ...
- AC日记——约瑟夫问题 codevs 1282
1282 约瑟夫问题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 查看运行结果 题目描述 Description 有编号从1到N的N个小 ...
- return false
”return false“到底做了什么? 当你每次调用”return false“的时候,它实际上做了3件事情: •event.preventDefault();•event.stopPropaga ...
- MySql操作
用C#写了个系统更新的小程序,用到MySql MySQL 5.1参考手册 1.使用MySqlConnection 需要引用dll: MySql.Data.rar 连接数据库 string conStr ...
- CSS常用浮出层的写法
点此查看实例展示 是的,我们即将实现的就是以上功能,是不是很生动? 贴上HTML: <div class="poptip"> <span class=" ...