2

getTasksWithCompletionHandler私は NSURLSessionを呼び出すことを知っています:

セッション内のすべての未処理のデータ、アップロード、およびダウンロード タスクで完了コールバックを非同期的に呼び出します。

ただし、実験から、メソッドによって返されるデータ、アップロード、およびダウンロードのタスク配列を確認できます。

func getTasksWithCompletionHandler(_ completionHandler: ([NSURLSessionDataTask], [NSURLSessionUploadTask], [NSURLSessionDownloadTask]) -> Void)

実際には、実行中のタスクのみを表示します。つまり、受け取ったタスクresume()

これは、このコードをコピーしてプレイグラウンドに貼り付けることで確認できます。

import UIKit
import XCPlayground

XCPlaygroundPage.currentPage.needsIndefiniteExecution = true

let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: config)
let url = NSURL(string: "http://jsonplaceholder.typicode.com")
let request: NSURLRequest = NSURLRequest(URL: url!)
let task : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
    NSLog("Done")
})

session.getAllTasksWithCompletionHandler { (tasks:[NSURLSessionTask]) -> Void in
    NSLog("\(tasks)")
    XCPlaygroundPage.currentPage.finishExecution()
}

//task.resume()

getTasksWithCompletionHandlerand getAllTasksWithCompletionHandler- iOS 9 でリリースされた後者 - は、完了クロージャーの署名のみが異なるように見えることに注意してください。

また、やや興味をそそられることに、、、を与えるプロパティがNSURLSessionTaskあります。stateNSURLSessionTaskStateRunningSuspendedCancelingCompleted

非実行タスクのリストにアクセスする方法はありますか? NSURLSessionまだ再開されていないものはありますか?

4

0 に答える 0