gpt4 book ai didi

swift - 移动到另一个 UIViewController 时如何取消 NSURLSession

转载 作者:搜寻专家 更新时间:2023-11-01 05:35:12 25 4
gpt4 key购买 nike

我正在使用 NSURLSession 进行 API 调用。一旦 API 被命中,在得到响应之前我将移动到另一个 View Controller 。如何停止在当前 View Controller 中运行的所有 NSURLSession?请指导我。

我的示例代码不工作。如果我移动到另一个 UIViewController,该新 session 会创建并工作正常,但之前的 UIViewControllers session 会恢复。如何停止该 session ?请指导我。

获取 API 校准示例:

var testSession = NSURLSession.sharedSession()
var testTask = NSURLSessionDataTask()


override func viewDidAppear(animated: Bool) {

testTask = testSession.dataTaskWithURL(NSURL(string: "http://httpbin.org/get")!, completionHandler: { (data, response, error) -> Void in
do{
let str = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [String:AnyObject]
print(str)
}
catch {
print("json error: \(error)")
}
})
testTask.resume()
}


override func viewDidDisappear(animated: Bool) {

testTask.cancel()
testSession.finishTasksAndInvalidate()
}

最佳答案

不要使用共享 session 。使用您显式创建的真实 session 。然后,当您不再需要任何待处理的请求时,在 session 上调用 invalidateAndCancel

关于swift - 移动到另一个 UIViewController 时如何取消 NSURLSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42470450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com