首页 > 解决方案 > 在关闭 ViewConttoller UI 时卡住

问题描述

我正在研究详细页面视图控制器,我正在研究 2 个不同的 API。当我在 api 加载完成到我的主页之前关闭我的视图控制器时,我的主页的 UI 卡住了一段时间。我确实取消了我的 api 请求,但它不起作用。

代码://在关闭时呈现的视图控制器内

let sessionManager = Alamofire.SessionManager.default
   sessionManager.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
      dataTasks.forEach { $0.cancel() }
      uploadTasks.forEach { $0.cancel() }
      downloadTasks.forEach { $0.cancel() }
   }
self.dismiss(animated: true, completion: nil)

标签: iosswiftalamofire

解决方案


有两种方法可以取消任务。

在 alamofire 中,您需要获取所有任务并检查您的任务是否可用(如果可用)删除并关闭到以前的 VC.for 例如

   Alamofire.SessionManager.default.session.getAllTasks { (tasks) in
        tasks.forEach { if ($0.originalRequest?.url?.absoluteString == "yourURLName") { $0.cancel() }         }
        self.dismiss(animated: true, completion: nil)

    }

选项 2

检查您当前的任务是上传或下载还是数据任务,根据任务在解雇之前删除您当前的任务,例如

 Alamofire.SessionManager.default.session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
        dataTasks.forEach { if ($0.originalRequest?.url?.absoluteString == "yourURLName") { $0.cancel() }         }
         self.dismiss(animated: true, completion: nil)
    }

作为参考,我从这里得到了答案


推荐阅读