你怎么知道什么时候NSURLSession对象被iOS无效?

我在我的testing中看到一个错误,偶尔出现以下iOS错误:

具有标识符{GUID}的后台URLSession已经存在!

即使在每次testing之后我都会在清理调用中的NSURLSession上调用invalidateAndCancel。 我正在寻找一种方法来等待,直到我确定NSURLSession对象已经失效,然后再继续下一个testing。

当你创buildNSURLSession对象时,使用sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(id <NSURLSessionDelegate>)delegate delegateQueue:(NSOperationQueue *)queue; 方法并将自己指定为委托。

然后你会得到一个callback: - (void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(NSError *)error; 当会话失效时。

你不能相信invalidateAndCancel将立即停止所有的任务,因为它是由任务来处理取消呼叫。

NSURLSession的头NSURLSession

 /* -invalidateAndCancel acts as -finishTasksAndInvalidate, but issues * -cancel to all outstanding tasks for this session. Note task * cancellation is subject to the state of the task, and some tasks may * have already have completed at the time they are sent -cancel. */ 

苹果

“重要

会话对象保持对委托的强引用,直到您的应用退出或显式使会话无效。 如果你没有使会话无效,你的应用程序会泄漏内存直到它退出。“

也许代表是无效的会议(如果你总是使用代表)。 虽然同意为什么没有isValid电话会议?