线程间通信


#import "ViewController.h"


@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIImageView *imageView;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];


    // <1>下载网络图片 ----> 子线程

    // <2>下载完成之后,显示网络图片  ---->主线程

    

    // 线程间通信:掌握

    

}


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    NSLog(@"touchesBegan%@",[NSThread currentThread]);

    

    // 创建一个线程

    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(downloadWebImage) object:nil];

    

    // 开启线程

    [thread start];

}


// 下载网络图片

- (void)downloadWebImage

{


    NSLog(@"downloadWebImageBegin%@",[NSThread currentThread]);

    

    // 图片地址的字符串

//    NSString *urlString = @"http://c.hiphotos.baidu.com/image/h%3D200/sign=c44e346ddfb44aed464eb9e4831c876a/6a63f6246b600c33c512e9ef1f4c510fd9f9a1a9.jpg";

    

    NSString *urlString = @"file:///Users/apple/Desktop/15.56.46.png";

    

    // 统一资源定位符

    // url中不要出现汉字.

    NSURL *url = [NSURL URLWithString:urlString];

    

    // 下载图片(得到的是图片的二进制数据)

    NSData *data = [NSData dataWithContentsOfURL:url];

    

   // [data writeToFile:@"/Users/apple/Desktop/meinv.jpg" atomically:YES];

    

    // 将图片的二进制数据转换成图片

    UIImage *image = [UIImage imageWithData:data];

    

    

    // 回到主线程显示图片

    

    // <#(BOOL)#> :是否等待方法:showImageWithImage:执行结束

    [self performSelector:@selector(showImageWithImage:) onThread:[NSThread mainThread] withObject:image waitUntilDone:NO];

    

    //[NSThread sleepForTimeInterval:3];

    

    NSLog(@"downloadWebImageEnd%@",[NSThread currentThread]);

    

    // self.imageView.image = image;

    // 如果线程中的任务比较简单.一般不会出现问题!

    // 但是,我们需要时刻注意在主线程更新UI

    // 如果,出现图片显示缓慢或者长时间之后才显示,一般问题的原因都是没有在主线程做UI操作.

}

 

// 显示图片

- (void)showImageWithImage:(UIImage *)image

{

    NSLog(@"showImage%@",[NSThread currentThread]);

    self.imageView.image = image;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值