gpt4 book ai didi

ios - 在 iOS 中取消 HTTP 连接

转载 作者:搜寻专家 更新时间:2023-10-31 08:06:10 25 4
gpt4 key购买 nike

我想在后台应用程序中取消Http 连接。

这是我的代码:

override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "my url")
let task = URLSession.shared.dataTask(with: url!) { data, response, error in
guard error == nil else {
print(error)
return
}
guard let data = data else {
print("Data is empty")
return
}
do {
if let jsonResult = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary {
print("ASynchronous\(jsonResult)")
}
} catch let error as NSError {
print(error.localizedDescription)
}
}

task.resume()

}

如何在程序中的任意位置取消它?

最佳答案

一种方法是保留对任务的引用,而不是本地“任务”。

例如,在您的 viewDidLoad 之外创建:

var taskToReference: NSURLSessionDataTask!

然后更改您的代码,将 let task = URLSession... 改为 taskToReference = URLSession...

现在你有了一个引用变量,你可以在你的 View Controller 中的任何地方使用它。只需在类里面的任何地方执行 taskToReference.cancel() 即可。

为了让您可以在整个应用程序的任何 View 中执行此操作,而不是在您的类中创建 var,而是在您的 AppDelegate 中创建它并将引用保存在那里!

在您的应用委托(delegate)中:

var taskToReference: NSURLSessionDataTask!

然后在您的 viewDidLoad 中,在引用应用范围的 var 之前获取对应用委托(delegate)的引用:

let appDelegate = UIApplication.shared.delegate as! AppDelegate

然后将您的初始任务更改为:

appDelegate.taskToReference = URLSession...

关于ios - 在 iOS 中取消 HTTP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40788290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com