探究iOS开发中多线程之间的通信

在一个进程中,线程往往不是孤立存在的,一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和子线程间要进行通信。

线程间通信的表现:

1个线程传递数据给另1个线程
在1个线程中执行完特定任务后,转到另1个线程继续执行任务
具体代码如下:

#import "ViewController.h"

@interface ViewController (){
    UIImageView *imageV;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    imageV = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    [self.view addSubview:imageV];
    [self performSelectorInBackground:@selector(downImage) withObject:nil];

}

-(void)downImage{
        //从网络中下载图片
    NSURL *url = [NSURL URLWithString:@"http://i8.topit.me/8/c1/31/1142319854bdc31c18o.jpg"];
        //将图片转换为二进制数据
    NSData *imgData = [NSData dataWithContentsOfURL:url];
        //数据转换成图片
    UIImage *img = [UIImage imageWithData:imgData];

        //回到主线程设置图片
    [self performSelectorOnMainThread:@selector(senderImage:) withObject:img waitUntilDone:NO];
}
-(void)senderImage:(UIImage *)image
{
    imageV.image = image;
}

效果图:
探究iOS开发中多线程之间的通信_第1张图片

你可能感兴趣的:(通信)