NSURLSession 任务取消问题(CFNetwork 内部错误)

NSURLSession task cancellation issue (CFNetwork internal error)

我在日志中收到错误消息:

CFNetwork internal error 0xc01a:/SourceCache/CFNetwork/CFNetwork-711.1.16/Connection/URLConnectionLoader.cpp:1321)

问题是处理在极端压力下取消 NSURLSessionDataTask 对象(任务的创建和取消速度非常快)。未取消任务时不会发生错误。当任务被延迟取消时也不会发生:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
   [_task cancel];
});

Apple 很久以前就停止提供 CFNetwork 来源。有人如何调试此类错误?

您可以在此处放置代码异常。还使用 NSError class 来查找网络任务期间发生的错误。

这个问题有一个简单的解决方案 - 您应该限制请求的速率。 https://en.wikipedia.org/wiki/Token_bucket URLSession 只是不是为了那样使用而设计的。