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
只是不是为了那样使用而设计的。
我在日志中收到错误消息:
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
只是不是为了那样使用而设计的。