[Xcode 實際操做]8、網絡與多線程-(22)使用GCD多線程技術異步下載圖片

目錄:[Swift]Xcode實際操做html

本文將演示如何使用使用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 }
相關文章
相關標籤/搜索