独自のセッションオブジェクト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!)
}
In Swift 3.0以降:
URLSession.shared.dataTask(with: url, completionHandler:
{
(data, response, error) in
//Your code
}).resume()
共有セッションとは別に、NSURLSession
はこれら2つの方法のいずれかで初期化する必要があります
init(configuration configuration: NSURLSessionConfiguration)
init(configuration configuration: NSURLSessionConfiguration,
delegate delegate: NSURLSessionDelegate?,
delegateQueue queue: NSOperationQueue?)
宣言中に初期化を行います:-
var session = URLSession(configuration: .default)