1

API呼び出しにNSURLSessionを使用しています。 APIがヒットしたら、応答を得る前に別のView Controllerに移動します。現在のビューコントローラで実行中のNSURLSessionをすべて停止する方法はありますか?親切に私を導く。別のUIViewControllerに移動するときにNSURLSessionをキャンセルする方法

サンプルコードが機能しません。別のUIViewControllerに移動すると、その新しいセッションが作成されて正常に動作していますが、以前のUIViewControllers'sセッションが再開します。そのセッションを止めるには?親切に私を導く。

サンプルは、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() 
    } 

答えて

0

が共有セッションを使用しないでください。明示的に作成する実際のセッションを使用します。その後、保留中のリクエストが不要になったときに、セッションでinvalidateAndCancelに電話してください。

関連する問題