我在测试中看到错误,偶尔会收到以下iOS错误:
标识符为{GUID}的后台URLSession已经存在!
即使我在每次测试后在清理调用中在NSURLSession上调用invalidateAndCancel。我正在寻找一种等待直到我确定NSURLSession对象已失效的方法,然后再进行下一个测试。
最佳答案
创建NSURLSession
对象时,请使用sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(id <NSURLSessionDelegate>)delegate delegateQueue:(NSOperationQueue *)queue;
方法并将自己指定为委托(delegate)。
当 session 无效时,您将在- (void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(NSError *)error;
中获得一个回调。
您不能相信invalidateAndCancel
会立即停止所有任务,因为这取决于处理取消调用的任务。
从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.
*/
关于ios - 您如何知道iOS何时使NSURLSession对象无效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21414823/