网络开始---多线程---线程间的通信(掌握)(五)
2015-09-18 01:10
597 查看
#import "HMViewController.h" @interface HMViewController () @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @implementation HMViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } //点击下载图片 下载图片是耗时操作,放到子线程中执行 创建一个新的线程执行下载图片 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //创建线程 [self performSelectorInBackground:@selector(download) withObject:nil]; } /** * 下载图片 */ - (void)download { NSLog(@"download---%@", [NSThread currentThread]); // 1.要下载的图片地址url NSString *urlStr = @"http://d.hiphotos.baidu.com/image/pic/item/37d3d539b6003af3290eaf5d362ac65c1038b652.jpg"; NSURL *url = [NSURL URLWithString:urlStr]; // 2.根据地址下载图片的二进制数据(这句代码最耗时) NSLog(@"---begin"); //二进制数据 NSData *data = [NSData dataWithContentsOfURL:url]; NSLog(@"---end"); // 3.设置图片 用二进制数据设置图片 UIImage *image = [UIImage imageWithData:data]; //在子线程中下载图片,下载完成后要回到主线程去修改UI界面,牵扯到主线程与子线程之间的来回穿梭 // 4.回到主线程,刷新UI界面(为了线程安全) 就是把图片放上去 [self performSelectorOnMainThread:@selector(downloadFinished:) withObject:image waitUntilDone:NO]; //后面的YES是指回到主线程设置图片,代码在这里一直等待,等到图片设置好再往下执行 //NO则表示回到主线程设置图片,代码继续往下执行,不管图片有没有设置好 //可以给任意线程传东西,线程间的通信 object就是你要传的对象,就是你想要设置的东西 // [self performSelector:@selector(downloadFinished:) onThread:[NSThread mainThread] withObject:image waitUntilDone:YES]; //和主线程通信,设置UI界面图片 // [self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES]; NSLog(@"-----done----"); } /** * 设置这个图片是在主线程中执行的 * * @param image <#image description#> */ - (void)downloadFinished:(UIImage *)image { self.imageView.image = image; NSLog(@"downloadFinished---%@", [NSThread currentThread]); } @end
相关文章推荐
- 网络开始---多线程---线程的安全问题(了解)(四)
- 网络开始---多线程---NSThread-02-线程状态(了解)(三)
- 网络开始---多线程---NSThread-01-基本使用(了解)(二)
- 网络开始---多线程---阻塞主线程(演示)(一)
- tcp wrappers
- 网站为什么要使用https加密 https加密链接作用
- 承接游戏UI美术外包【厦门巨游网络科技有限公司】
- 解决VMware虚拟机搭建linux、win环境时遇到网络桥接无法使用、NAT网络正常访问的情况。
- 使用apache-httpserver2.2
- HttpClient 教程 (一)
- 【图论】最大密度子图&权闭合图
- 网络笔记01-1
- Linux服务管理之httpd-2.2常用配置文件
- 关于socket tcp 断线重连
- 网络编程经典好书推荐
- TCP/IP发送图片,swing.JPanel显示并更新图片(二、图片发送和发送/接受的同步)
- Fiddler https 证书问题
- 盘点三个网络赚零花钱的小项目,傻瓜式操作
- Linux中Centos6与Centos7的网络配置及网络工具使用
- unity3d与网络有关的类及其基本操作