你怎么知道什么时候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电话会议?