【发布时间】:2016-08-25 04:06:15
【问题描述】:
invalidateAndCancel() 的使用带来了另一个问题,即如果您需要再次使用会话,则需要再次重新初始化会话。在搜索了这个问题后,我得到了 Cnoon 的Alamofire Background Service, Global Manager? Global Authorisation Header? 的答案。尝试创建管理器,但是当它被调用时,它永远不会重新初始化值,为了预料到这个问题,我做了一个小作弊,我尝试每次给我的会话新名称。
func reset() -> Manager {
let configuration: NSURLSessionConfiguration = {
let identifier = "com.footbits.theartgallery2.background-session\(sessionCount)"
let configuration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier(identifier)
return configuration
}()
return Alamofire.Manager(configuration: configuration)
}
func cancelAllRequests() {
manager.session.invalidateAndCancel()
sessionCount += 1
manager = reset()
}
现在我很好奇背景中发生的事情,比如上一个会话仍然存在或已被 alamofire 删除,因为如果它仍然存在,我可以创建多少个会话以及后续影响是什么?因为我试过了:
manager.session.resetWithCompletionHandler {
print("Session reset")
}
它不起作用。
【问题讨论】:
-
因为在那个特定的时刻我希望它完成并且有可能下次我会从一个新的请求开始。
-
所以我已经尝试过它永远不会立即生效。我不知道这背后的科学是什么。此外,Cnoon 的回答:stackoverflow.com/questions/32999892/… 鼓励我们通过使会话无效来做到这一点,是的,它也可以工作。你能分享一下你是如何推荐它的吗?
标签: ios swift session alamofire tvos