簡體   English   中英

從進入主隊列后,UI變得無響應

[英]UI becomes non responding after getting from in to the main queue

我試圖從url延遲加載圖像並在僅在主隊列中接收到圖像時更新UI,UI得到更新,但視圖變得無響應,我正在使用GCD創建一個新線程來獲取網址中的數據

讓imageUrl:NSURL = NSURL(string:SiteAPIURL +(DEFAULTS.valueForKey(kInviterImageUrl)as!String))!

    let request: NSURLRequest = NSURLRequest(URL: imageUrl)
    SwiftLoader.show(title: "Loading", animated: true)


    let queue  : dispatch_queue_t = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)

  dispatch_async(queue) { () -> Void in
    let data : NSData = NSData(contentsOfURL: imageUrl)!
    let image = UIImage(data: data)!
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        self.userImage.image   = image
        self.userImageWide.image = image

    })



    }

}

“ DISPATCH_QUEUE_PRIORITY_HIGH:調度到隊列的項目以高優先級運行;該隊列計划在任何默認優先級或低優先級隊列之前執行。” 多數民眾贊成從文檔,所以使用其他優先級較低的東西,因為這可能會阻止默認隊列,例如QOS_CLASS_USER_INITIATED。 這就是你想要的

    if let url = imageUrl{
        let qos = Int(QOS_CLASS_USER_INITIATED.rawValue)
        dispatch_async(dispatch_get_global_queue(qos, 0), {
            let data = NSData(contentsOfURL: imageUrl)
            dispatch_async(dispatch_get_main_queue(), {
                if data != nil {
                    if let image = UIImage(data: data){
                        self.userImage.image   = image
                        self.image = UIImage(data: imageData!)
                        self.userImageWide.image = image
                    }
                }
            })
        })
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM