多线程网络下载图片

小Demo展示

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic, strong) UIImageView *myImage;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor cyanColor];
   
    self.myImage = [[UIImageView alloc] initWithFrame:self.view.bounds];
   
    [self.view addSubview:self.myImage];
   
   
   
   
}

//当手指触摸屏幕的时候,从网络下载一张图片到控制器的view上显示
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
   
   
    //1.获取一个全局窜行队列
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    //2.把任务添加到队列中执行
    dispatch_async(queue, ^{
       
      
        NSLog(@"%@",[NSThread currentThread]);//打印的结果;{number = 2, name = (null)}
         //3.从网络上下载图片
        NSURL *url = [NSURL URLWithString:@"https://img14.360buyimg.com/n7/jfs/t277/193/1005339798/768456/29136988/542d0798N19d42ce3.jpg"];
       
        NSData *data = [NSData dataWithContentsOfURL:url];
       
        UIImage *image = [UIImage imageWithData:data];
       
        NSLog(@"图片加载完成");
       
            //4.回到主线程,展示图片
        dispatch_async(dispatch_get_main_queue(), ^{
           
            self.myImage.image = image;
           
            NSLog(@"当前线程:---%@",[NSThread currentThread]);//{number = 1, name = main}
           
        });
       
    });
   

}
posted @ 2015-12-10 20:03  大大的太阳ing  阅读(117)  评论(0)    收藏  举报