【问题标题】:Loading images is slow after changing NSURLConnection to NSURLSession将 NSURLConnection 更改为 NSURLSession 后加载图像很慢
【发布时间】:2016-01-07 04:37:29
【问题描述】:

我在 iOS 8 中有一个用于加载图像的代码,而且速度非常快。

if let url = NSURL(string: urlString) {
        let request = NSURLRequest(URL: url)
        NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
            (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in
            self.image = UIImage(data: data!)
        }
    }

然后 iOS 9 出来了,我为此苦苦挣扎

let session = NSURLSession.sharedSession()
    let urlString = urlString
    let url = NSURL(string: urlString)
    let request = NSURLRequest(URL: url!)
    let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
        self.image = UIImage(data: data!)
    }
    dataTask.resume()

图片加载速度很慢。

【问题讨论】:

标签: ios uiimage swift2 ios9 nsurlsession


【解决方案1】:

dataTaskWithRequest 闭包中,您必须在主线程上更新图像。这样做:

let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
    dispatch_async(dispatch_get_main_queue()) {
        self.image = UIImage(data: data!)
    }
}

【讨论】:

  • 干得好!非常感谢。图片加载速度更快!
猜你喜欢
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 2015-09-04
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
相关资源
最近更新 更多