1. 程式人生 > >使用GCD多執行緒技術下載圖片(非同步下載)

使用GCD多執行緒技術下載圖片(非同步下載)

    var imageView = UIImageView()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        imageView.frame = CGRect(x: 20, y: 80, width: 330, height: 450)
        self.view.addSubview(imageView)
        
        let picPath = "https://imgsrc.baidu.com/forum/pic/item/741ccaedab64034f38facc9ca4c379310b551d5f.jpg"
        let picUrl = URL(string: picPath)
        
        //使用分離執行緒選擇器方法,建立一個執行緒,用來執行下載圖片的方法
        let globalQueue = DispatchQueue.global()
        //建立一個非同步方法,用來下載網路圖片
        globalQueue.async {
            //通過資料物件下載網路圖片,並將下載後的二進位制資料儲存在常量中
            let picData = try? Data(contentsOf: picUrl!)
            //將資料物件轉換成圖片物件
            let picture = UIImage(data: picData!)
            //返回主執行緒,並在主執行緒中更新圖片內容
            DispatchQueue.main.sync {
                self.imageView.image = picture
            }
        }
    }