[Xcode 实际操作]八、网络与多线程-(22)使用GCD多线程技术异步下载图片

目录:[Swift]Xcode实际操作

本文将演示如何使用使用GCD多线程技术异步下载图片。

Grand Central Dispatch(GCD) 是 Apple 开发的一个多核编程的较新的解决方法。

它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。

它是一个在线程池模式的基础上执行的并发任务。

在 Mac OS X 10.6 雪豹中首次推出,也可在 iOS 4 及以上版本使用。

 1 import UIKit
 2 
 3 class ViewController: UIViewController {
 4 
 5     //给当前视图控制器类,添加一个图像视图属性。
 6     //该图像视图对象,将用来显示下载后的网络图片
 7     var imageView = UIImageView()
 8     
 9     override func viewDidLoad() {
10         super.viewDidLoad()
11         // Do any additional setup after loading the view, typically from a nib.
12         
13         //设置图像视图的位置在(20,80),尺寸为280,100
14         imageView.frame = CGRect(x: 20, y: 80, width: 280, height: 280)
15         //将设置好的图像视图对象,添加当前视图控制器的根视图
16         self.view.addSubview(imageView)
17         
18         //创建一个字符串对象,指定网络图片的地址
19         let picPath = "https://www.cnblogs.com/strengthen//images/logo.png"
20         //将字符串转换为网址对象
21         let picUrl = URL(string:picPath)
22         
23         //使用分离新线程选择器方法,创建一个线程,用来执行下载图片的方法
24         let globalQueue = DispatchQueue.global()
25         //创建一个异步方法,用来下载网络图片
26         globalQueue.async
27         {
28             //通过Data下载网络图片,
29             //并将下载后的二进制数据存储在常量种
30             let picData = try? Data(contentsOf: picUrl!)
31             //将数据对象,转换为图片对象
32             let picture = UIImage(data: picData!)
33             //返回主线程
34             DispatchQueue.main.async
35             {
36                 //并在主线程中,更新界面上的图像视图的内容
37                 self.imageView.image = picture
38             }
39         }
40     }
41 
42     override func didReceiveMemoryWarning() {
43         super.didReceiveMemoryWarning()
44         // Dispose of any resources that can be recreated.
45     }
46 }

 

转载于:https://www.cnblogs.com/strengthen/p/10074806.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值