1

J'utilise NSURLSession pour un appel d'API. Une fois que l'API est touchée, avant d'obtenir une réponse, je passe à un autre contrôleur de vue. Comment arrêter tous NSURLSession s'exécutant dans le contrôleur de vue en cours? Veuillez me guider.Comment annuler NSURLSession lors du déplacement vers un autre UIViewController

Mon code d'exemple ne fonctionne pas. Si je passe à un autre UIViewController, cette nouvelle session crée et fonctionne bien mais UIViewControllers's reprise de session précédente. Comment arrêter cette session? Veuillez me guider.

échantillon Obtenir 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() 
    } 

Répondre

0

Ne pas utiliser la session partagée. Utilisez une session réelle que vous créez explicitement. Puis appelez invalidateAndCancel sur la session lorsque vous n'avez plus besoin de ses demandes en attente.