#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// <1>下载网络图片 ----> 子线程
// <2>下载完成之后,显示网络图片 ---->主线程
// 线程间通信:掌握
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"touchesBegan%@",[NSThread currentThread]);
// 创建一个线程
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(downloadWebImage) object:nil];
// 开启线程
[thread start];
}
// 下载网络图片
- (void)downloadWebImage
{
NSLog(@"downloadWebImageBegin%@",[NSThread currentThread]);
// 图片地址的字符串
// NSString *urlString = @"http://c.hiphotos.baidu.com/image/h%3D200/sign=c44e346ddfb44aed464eb9e4831c876a/6a63f6246b600c33c512e9ef1f4c510fd9f9a1a9.jpg";
NSString *urlString = @"file:///Users/apple/Desktop/15.56.46.png";
// 统一资源定位符
// url中不要出现汉字.
NSURL *url = [NSURL URLWithString:urlString];
// 下载图片(得到的是图片的二进制数据)
NSData *data = [NSData dataWithContentsOfURL:url];
// [data writeToFile:@"/Users/apple/Desktop/meinv.jpg" atomically:YES];
// 将图片的二进制数据转换成图片
UIImage *image = [UIImage imageWithData:data];
// 回到主线程显示图片
// <#(BOOL)#> :是否等待方法:showImageWithImage:执行结束
[self performSelector:@selector(showImageWithImage:) onThread:[NSThread mainThread] withObject:image waitUntilDone:NO];
//[NSThread sleepForTimeInterval:3];
NSLog(@"downloadWebImageEnd%@",[NSThread currentThread]);
// self.imageView.image = image;
// 如果线程中的任务比较简单.一般不会出现问题!
// 但是,我们需要时刻注意在主线程更新UI
// 如果,出现图片显示缓慢或者长时间之后才显示,一般问题的原因都是没有在主线程做UI操作.
}
// 显示图片
- (void)showImageWithImage:(UIImage *)image
{
NSLog(@"showImage%@",[NSThread currentThread]);
self.imageView.image = image;
}