我正在使用NSURLSession
进行API调用。一旦API被点击,在获得响应之前我将转移到另一个视图控制器。如何阻止当前视图控制器中运行的所有NSURLSession
?请指导我。
我的示例代码无效。如果我移动到另一个UIViewController
,则新会话创建并正常工作,但之前的UIViewControllers's
会话正在恢复。如何停止该会话?请指导我。
示例获取API Cal:
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()
}
答案 0 :(得分:0)
不要使用共享会话。使用您明确创建的真实会话。当您不再需要任何待处理请求时,请在会话中调用invalidateAndCancel
。