【发布时间】:2020-08-31 14:22:04
【问题描述】:
我正在为后台下载任务创建URLSession,如下所示,
class ViewController: UIViewController, URLSessionDelegate {
var session: URLSession!
lazy var downloadsSession: URLSession = {
let configuration = URLSessionConfiguration.background(withIdentifier:
"bgDownloader")
// configuration.sessionSendsLaunchEvents = true
let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
return session
} ()
override func viewDidLoad() {
super.viewDidLoad()
print("started")
session = downloadsSession
print("done")
// Do any additional setup after loading the view.
}
}
每当控件点击 viewdidload() 中的let session = URLSession(...) 行时,应用程序就会冻结。有什么帮助吗?
【问题讨论】:
-
您能分享一下您调用此 URLSession 的代码吗?
-
首先,您确定您的代码中没有breakpoints 吗?其次,把它放在一个空白项目中,你会发现这段代码不足以导致它冻结。问题出在其他地方。
-
@Rob 我创建了一个空白项目并尝试了它。它仍然很冷。更新了原始帖子以包含整个代码。
-
尝试在主线程上运行? DispatchQueue.main.async { //code }
-
@Rob 我已将示例空白项目上传到bitbucket.org/gouthamvgk/test/src/master。非常感谢您的 cmets 和帮助。我正在使用 XCODE 11.4 和 iphone 11 pro max 模拟器
标签: swift xcode urlsession