多线程网络下载图片
小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}
});
});
@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}
});
});
}

浙公网安备 33010602011771号