当我尝试创建自己的会话对象NSURLSession()
并请求一个url时,我得到一个无法识别的选择器异常,但是当我使用共享会话时NSURLSession.sharedSession()
一切正常。怎么会?
var url = NSURL(string: "http:/www.google.com")
if url != nil {
//throws unrecognized selector when dataTaskWithURL is called
let session=NSURLSession()
session.dataTaskWithURL(url!)
//works
let sharedSession=NSURLSession.sharedSession()
sharedSession.dataTaskWithURL(url!)
}
在SWIFT 3.0及更高版本中:
URLSession.shared.dataTask(with: url, completionHandler:
{
(data, response, error) in
//Your code
}).resume()
除了共享会话之外,NSURLSession
必须使用这两种方法之一进行初始化
init(configuration configuration: NSURLSessionConfiguration)
init(configuration configuration: NSURLSessionConfiguration,
delegate delegate: NSURLSessionDelegate?,
delegateQueue queue: NSOperationQueue?)
声明时进行初始化: -
var session = URLSession(configuration: .default)