多线程 GCD队列组
// DYFViewController.m
// 623-08-队列组
//
// Created by dyf on 14-6-23.
// Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved.
//
#import "DYFViewController.h"
@interface
DYFViewController ()
@property
(weak,
nonatomic
)
IBOutlet
UIImageView *iconV1;
@property
(weak,
nonatomic
)
IBOutlet
UIImageView *iconV2;
@property
(weak,
nonatomic
)
IBOutlet
UIImageView *bigIconV;
@end
@implementation
DYFViewController
- (
void
)viewDidLoad
{
[
super
viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (
void
)didReceiveMemoryWarning
{
[
super
didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (
void
)touchesBegan:(
NSSet
*)touches withEvent:(UIEvent *)event
{
NSLog
(@
"%@"
, [
NSThread
currentThread]);
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
__block UIImage *icon1 =
nil
;
dispatch_group_async(group, queue, ^{
NSLog
(@
"%@"
, [
NSThread
currentThread]);
//
});
__block UIImage *icon2 =
nil
;
dispatch_group_async(group, queue, ^{
NSLog
(@
"%@"
, [
NSThread
currentThread]);
//
icon2 = [
self
imageWithURL:@
"http://news.baidu.com/z/resource/r/image/2014-06-22/b2a9cfc88b7a56cfa59b8d09208fa1fb.jpg"
];
});
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSLog
(@
"%@"
, [
NSThread
currentThread]);
//
self
.iconV1.image = icon1;
self
.iconV2.image = icon2;
UIGraphicsBeginImageContextWithOptions(CGSizeMake(200, 100),
NO
, 0);
[icon1 drawInRect:CGRectMake(0, 0, 100, 100)];
[icon2 drawInRect:CGRectMake(100, 0, 100, 100)];
self
.bigIconV.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
});
}
- (UIImage *)imageWithURL:(
NSString
*)iconPath
{
NSLog
(@
"%@"
, [
NSThread
currentThread]);
NSURL
*url = [
NSURL
URLWithString:iconPath];
NSData
*data = [
NSData
dataWithContentsOfURL:url];
return
[UIImage imageWithData:data];
}
@end
小结:
------------队列组------
1.有这么一种需求
·首先:分别异步执行2个耗时的操作
·其次:等2各异步操作都执行完毕后,再回到主线程执行操作
2.若想要快速高效的实现上述需求,可以考虑用队列组