如何正确清理 Swift 中的 NSURLSession

How to properly clean up an NSURLSession in Swift

我正在使用以下代码在 class 的 init 上创建一个 NSURLSession:

dispatch_once(&Static.token) { [unowned self] in
        let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier(CONSTANTS.BackgroundSessionUploadIdentifier)
        Static.session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: nil)
    }

完成后,class 不会被取消,任何未来上传的回调都将第一个 class 实例化作为它们自己。上传完成后如何正确清理 NSURLSession?

我的整个class可以在这里看到:

https://gist.github.com/aishowdown/e88f6595e5a23d936e29

通话

session.finishTasksAndInvalidate(),session会在最后一个任务完成后销毁

session.invalidateAndCancel(),会话会立即销毁