Tôi nghĩ rằng bạn nên làm điều này ...
Thứ nhất, theo dõi các yêu cầu của bạn mỗi xib
var download_requests = [NSURLSession]()
Sau đó, bất cứ khi nào bạn thực hiện một yêu cầu, thêm yêu cầu của bạn đến mảng của bạn như vậy,
let s = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
if let url = NSURL(string: "http://my.url.request.com")
{
download_requests.append(s)
s.dataTaskWithURL(url)
{ (data, resp, error) -> Void in
// ....
}
}
Sau đó, bất cứ khi nào bạn muốn hủy bất kỳ yêu cầu chưa xử lý nào, hãy nói trên viewDidDis xuất hiện), làm
override func viewDidDisappear(animated: Bool)
{
super.viewDidDisappear(animated)
//stop all download requests
for request in download_requests
{
request.invalidateAndCancel()
}
}
Nguồn
2015-11-22 12:10:20
Vâng, có API 'NSURLSessionTask', tìm những gì bạn muốn hủy và gọi' hủy' trên đó. – esh
Đúng, đó là 'NSURLSesstionTask' và thật dễ dàng để gửi phương thức' hủy'. Nhưng vấn đề là tìm một nhiệm vụ cụ thể. Trong trường hợp này, tôi cần phải liệt kê tất cả các nhiệm vụ của phiên hiện tại và tìm thấy tác vụ mà tôi cần bằng mô tả, ví dụ. Vì vậy, tôi cần một cách để liệt kê các nhiệm vụ trong phiên. –