iOS线程间通信

假如我们需要下载一张图片,因为下载图片是耗时操作,需要开辟新线程把下载图片操作放入子线程中执行。

通过这个方法就可以把下载图片操作放入到子线程中

 [self performSelectorInBackground:@selector(downloadImage) withObject:nil];


下载图片:

// 1. url是确定网络上的资源路径

NSURL *url = [NSURL URLWithString:@"http://img1.3lian.com/2015/w7/99/d/81.jpg"];  

// 2. 通过url下载对应的网络资源, 网络资源传输的都是二进制

NSData *data = [NSData dataWithContentsOfURL:url];  

// 3. 将二进制转成图片

UIImage *image = [UIImage imageWithData:data];

// 4. 把图片显示到imageView

 //self.imageView.image = image;这里需要把数据传到主线程,在主线程去更新UI更妥些

//5.把数据传入主线程中的的方法

 方法1:

[self performSelectorOnMainThread:@selector(downloadFinish:) withObject:image waitUntilDone:NO];

方法2:

[self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES];

方法3:

[self performSelector:@selector(downloadFinish:) onThread:[NSThread mainThreadwithObject:image waitUntilDone:NO];

// waitUntilDone:表示是否等待@selector(downloadFinish:) 方法执行完成

// 如果是YES,就等待setImage在其他线程执行结束,再往下执行


下面是代码:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值