iOS 9 中弃用 sendAsynchronousRequest 并在 iOS 10 中将其与 OperationQueue 一起使用
sendAsynchronousRequest deprecation in iOS 9 and using it in iOS 10 with OperationQueue
我正在尝试下载 1000 多张图片,总大小为 50MB。
我的 iOS 9 代码是:
let operationQueue = OperationQueue.main
operationQueue.maxConcurrentOperationCount = 1
operationQueue.qualityOfService = .background
for url in urls{
let urlRequest = URLRequest(url: URL(string: url)!)
NSURLConnection.sendAsynchronousRequest(urlRequest, queue: operationQueue, completionHandler: { (response, data, error) in
//image
})
}
所以我想一张一张下载图片,但是现在在iOS 10 sendAsynchronousRequest 已被弃用,我不知道如何将图片添加到队列中。我在 iOS 10 中看到了关于使用 sendAsynchronousRequest 的不同问题,但我没有找到如何将其添加到队列中。大多数答案是使用 URLSession.shared.dataTask(...)
,但是您不能将任务添加到队列中。关于如何将所有请求添加到 operationQueue 的任何建议?
URLSession
才是正确的做法。
与 NSURLConnection
中的请求是在队列中分派的不同,URLSession
本身是在队列中分派的。
使用
创建自定义会话
init(configuration: URLSessionConfiguration,
delegate: URLSessionDelegate?,
delegateQueue queue: OperationQueue?)
值得一读 documentation
我正在尝试下载 1000 多张图片,总大小为 50MB。 我的 iOS 9 代码是:
let operationQueue = OperationQueue.main
operationQueue.maxConcurrentOperationCount = 1
operationQueue.qualityOfService = .background
for url in urls{
let urlRequest = URLRequest(url: URL(string: url)!)
NSURLConnection.sendAsynchronousRequest(urlRequest, queue: operationQueue, completionHandler: { (response, data, error) in
//image
})
}
所以我想一张一张下载图片,但是现在在iOS 10 sendAsynchronousRequest 已被弃用,我不知道如何将图片添加到队列中。我在 iOS 10 中看到了关于使用 sendAsynchronousRequest 的不同问题,但我没有找到如何将其添加到队列中。大多数答案是使用 URLSession.shared.dataTask(...)
,但是您不能将任务添加到队列中。关于如何将所有请求添加到 operationQueue 的任何建议?
URLSession
才是正确的做法。
与 NSURLConnection
中的请求是在队列中分派的不同,URLSession
本身是在队列中分派的。
使用
创建自定义会话init(configuration: URLSessionConfiguration,
delegate: URLSessionDelegate?,
delegateQueue queue: OperationQueue?)
值得一读 documentation