ios - 在关闭 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)
解决方案
有两种方法可以取消任务。
在 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)
}
作为参考,我从这里得到了答案
推荐阅读
- amazon-web-services - S3中的前缀是什么意思
- c# - 位掩码枚举的通用单标志枚举
- opentok - OpenTok,检测远程订阅者是否连接不良或暂时断开或网络断开,适用于 Android 和 iOS SDK
- c# - DirectorySearcher 在本地工作但不在 IIS 服务器中工作
- assembly - 在 RISC 架构上运行的程序中,平均有多少百分比的指令是存储?
- swift - 使用 Swift 调用 rest API 时无法得到结果
- c# - 拆分 csv,其中一个选项卡是一个数组
- react-native - 未找到模块 - 在 app.js 中添加组件时
- ssms - SSMS 18.4 安装将无法运行
- microsoft-graph-api - MS Graph - 对话增量 API 不适用于某些频道