session.swift deinit 中的 Alamofire 崩溃:
Alamofire crash in session.swift deinit:
我正在从事 Swift 项目,我使用 alamofire 处理网络。此崩溃仅发生在 14.6.0 及以上 OS 版本。我已为 creating/cancel 会话附上以下代码:
会话创建:
func sessionManager() -> Session {
//SSL pining
instantiateTrustKit()
if let manage = self.manager {
return manage
}
else {
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 30
self.manager = Session(configuration: configuration, delegate: CustomDelegate())
guard let sessionManager = manager else {
return Session.default
}
return sessionManager
}
}
取消正在进行的请求:
func cancelAllRequests() {
sessionManager().session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
dataTasks.forEach {
[=12=].cancel() }
uploadTasks.forEach {
[=12=].cancel() }
downloadTasks.forEach {
[=12=].cancel() }
}
}
Crash Stack trace:
Crashed: com.apple.root.background-qos
0 libobjc.A.dylib 0x25dd0 objc_release + 16
1 Alamofire 0xb4b90 Session.deinit + 204 (Session.swift:204)
2 Alamofire 0xb4c2c Session.__deallocating_deinit + 202 (Session.swift:202)
3 libswiftCore.dylib 0x383c98 _swift_release_dealloc + 40
4 libswiftCore.dylib 0x384b90 bool swift::HeapObjectSideTableEntry::decrementStrong<(swift::PerformDeinit)1>(unsigned int) + 288
- 在发送请求时,我们调用了 sessionManager 函数来获取当前会话。
- 当用户第一次打开应用程序并导航到主屏幕时,将调用 取消请求 函数。
有谁知道上面的问题吗?
如果您转到 Xcode 菜单“产品”»“方案”»“编辑方案...”»“运行”»“诊断”并打开“地址消毒器”,然后“Detect use of stack after return”,它将帮助您在未来识别和解决这些问题:
我正在从事 Swift 项目,我使用 alamofire 处理网络。此崩溃仅发生在 14.6.0 及以上 OS 版本。我已为 creating/cancel 会话附上以下代码:
会话创建:
func sessionManager() -> Session {
//SSL pining
instantiateTrustKit()
if let manage = self.manager {
return manage
}
else {
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 30
self.manager = Session(configuration: configuration, delegate: CustomDelegate())
guard let sessionManager = manager else {
return Session.default
}
return sessionManager
}
}
取消正在进行的请求:
func cancelAllRequests() {
sessionManager().session.getTasksWithCompletionHandler { dataTasks, uploadTasks, downloadTasks in
dataTasks.forEach {
[=12=].cancel() }
uploadTasks.forEach {
[=12=].cancel() }
downloadTasks.forEach {
[=12=].cancel() }
}
}
Crash Stack trace:
Crashed: com.apple.root.background-qos
0 libobjc.A.dylib 0x25dd0 objc_release + 16
1 Alamofire 0xb4b90 Session.deinit + 204 (Session.swift:204)
2 Alamofire 0xb4c2c Session.__deallocating_deinit + 202 (Session.swift:202)
3 libswiftCore.dylib 0x383c98 _swift_release_dealloc + 40
4 libswiftCore.dylib 0x384b90 bool swift::HeapObjectSideTableEntry::decrementStrong<(swift::PerformDeinit)1>(unsigned int) + 288
- 在发送请求时,我们调用了 sessionManager 函数来获取当前会话。
- 当用户第一次打开应用程序并导航到主屏幕时,将调用 取消请求 函数。
有谁知道上面的问题吗?
如果您转到 Xcode 菜单“产品”»“方案”»“编辑方案...”»“运行”»“诊断”并打开“地址消毒器”,然后“Detect use of stack after return”,它将帮助您在未来识别和解决这些问题: