iOS多线程篇-NSThread-线程之间的通信(下载图片)

2016-01-12  本文已影响256人  LitterL

}

```
* 最后 在`touchesBegan`事件中调用;

 * 因为我的`xcode`是7.0,`xcode`会报一个这样的错误:

    ![](https://img.haomeiwen.com/i1232706/9b99048b2f349b48.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
`说阻止了明文HTTP资源的下载,因为它不安全,可以通过配置info.plist文件来更改`

    那么这副图以及解决了这个问题
 * 配置完`info.plist`之后  我们的图片是能够显示出来了,但是我们并没有使用到多线程,那么接下来我们就使用完成这种效果,也是本章的核心:线程之间的通信

* 简单概括
 * 1、点击屏幕的时候,我们创建一个线程用来做耗时的下载图片方法。
 * 2、当图片下载完成,我们利用线程之间的通信`performSelectorOnMainThread`传递给主线程。
 * 3、最后给我们的`ImageView`赋上图片

* 新增代码
```objc
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

// 开启一条子线程来下载图片
[NSThread detachNewThreadSelector:@selector(downloadImage) toTarget:self withObject:nil];
}
/**

}
```
以上代码就是我们本章的所有代码了

至于这段代码为什么要用`self.imageView`而不是`self`,因为那个方法是在`NSObject`类里面的,所有继承了`NSObject`的类都是可以使用的,在加上`setImage:`这个方法在`imageView`里面是具有的所有我也没有去重写了
```objc
[self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];
```
                  本章到此结束
            欢迎各位码友随意转载并指正
上一篇下一篇

猜你喜欢

热点阅读