// DYFViewController.m // 623-06-线程间的通信 // // Created by dyf on 14-6-23. // Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved. // #import "DYFViewController.h" @interface DYFViewController () @property (weak, nonatomic) IBOutlet UIImageView *imaV; @end @implementation DYFViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 1.下载图片 [self performSelector:@selector(download) withObject:nil]; // 显示、刷新界面,只能在主界面 // 2.显示图片 } /** * 下载图片:子线程 */ - (void)download { // 1.根据URL下载图片 NSURL *url = [NSURL URLWithString:@"http://image.cache.xiu8.com/live/125/125/997729.jpg"]; NSLog(@"---------begin"); NSData *data = [NSData dataWithContentsOfURL:url]; // 耗时 NSLog(@"-----------end"); UIImage *image = [UIImage imageWithData:data]; // 2.回到主线程显示图片 // [self.imaV performSelector:@selector(setImage:) onThread:[NSThread mainThread] withObject:image waitUntilDone:NO modes:nil]; //[self performSelectorOnMainThread:@selector(settingImage:) withObject:nil waitUntilDone:NO]; [self.imaV performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO]; } /** * 显示图片:主线程 * * @param image image */ - (void)settingImage:(UIImage *)image { self.imaV.image = image; } @end
小结:主线程与子线程之间的通信