iOS开发--线程间的通信主要分为两大类:
1.线程之间进行传值。
2.一个线程完成之后,转到另一个线程中继续执行。
直接上代码:
- (void)viewDidLoad { [super viewDidLoad]; // [self test1];// [self test2]; [self setUpUI]; [self correspond];}/******线程间的通信*******//******在一个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信。*******//******线程间的通信主要体现在下面两个方面。*******//******1. 一个线程传递数据给另一个线程。*******//******2. 在一个线程中执行完特定任务后,转到另一个线程继续执行任务。*******/-(void)setUpUI{ UIImageView *iconView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 100, kScreenWidth, 100)]; iconView.backgroundColor = [UIColor clearColor]; [self.view addSubview:iconView]; self.iconView = iconView;}/******运用NSThread来展现*******/-(void)correspond{ /******在自线程中调用download方法下载图片*******/ [self performSelectorInBackground:@selector(download) withObject:nil];}-(void)download{ NSURL *url = [NSURL URLWithString:@"http://www.yoka.com/dna/pics/ba15ad3a/d3571b5e5e9ba95ea11.jpg"]; NSData *data = [NSData dataWithContentsOfURL:url]; UIImage *icon = [UIImage imageWithData:data]; /******NSThread版本*******/ /******一个线程传递数据给另一个线程*******/// [self.iconView performSelectorOnMainThread:@selector(setImage:) withObject:icon waitUntilDone:NO]; /******在一个线程中执行完特定任务后,转到另一个线程继续执行任务*******/// [self performSelectorOnMainThread:@selector(settingImage:) withObject:icon waitUntilDone:NO]; /******dispatch版本*******/ dispatch_async(dispatch_get_main_queue(), ^{ [self settingImage:icon]; });}-(void)settingImage:(UIImage *)image{ [self.iconView setImage:image];}