码迷,mamicode.com
首页 > 移动开发 > 详细

iOS多线程开发小demo7 GCD队列组

时间:2014-06-24 11:19:08      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:class   blog   http   ext   com   get   

//  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]);
        //
        icon1 = [self imageWithURL:@"http://image.cache.xiu8.com/live/125/125/997729.jpg"];
        
    });
    __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.若想要快速高效的实现上述需求,可以考虑用队列组

 

iOS多线程开发小demo7 GCD队列组,布布扣,bubuko.com

iOS多线程开发小demo7 GCD队列组

标签:class   blog   http   ext   com   get   

原文地址:http://www.cnblogs.com/dyf520/p/3805310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!