gpt4 book ai didi

ios - 从进入主队列后,UI 变得无响应

转载 作者:行者123 更新时间:2023-11-28 08:56:15 25 4
gpt4 key购买 nike

我正在尝试从 url 延迟加载图像并在仅在主队列中接收到图像后更新 UI,UI 正在更新但 View 变得无响应,我正在使用 GCD 创建一个新的从 URL 获取数据的线程

让 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:分派(dispatch)到队列的项目以高优先级运行;队列被安排在任何默认优先级或低优先级队列之前执行。”那是文档中的内容,因此请使用优先级较低的其他内容,因为这可能会阻塞默认队列,例如 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
}
}
})
})
}

关于ios - 从进入主队列后,UI 变得无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32956545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com