想知道是否有人能提供他们的两分钱。下面的代码在didCompleteWithError超时时成功地触发timeoutIntervalForResource NSURLSessionDelegate方法。
NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.xxx.xxx"];
config.timeoutIntervalForRequest = 20.0f;
config.timeoutIntervalForResource = 20.0f;
self.session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];但是,像下面这样设置超时并不是
self.session.configuration.timeoutIntervalForResource = 20.0f;
self.session.configuration.timeoutIntervalForRequest = 20.0f;我想要达到的目标是根据不同的API改变timeoutIntervalForResource。
if(needs less timeout){
self.session.configuration.timeoutIntervalForResource = 8.0f;
} else{
self.session.configuration.timeoutIntervalForResource = 30.0f;
}发布于 2022-10-16 23:36:38
你说过:
下面的代码在
didCompleteWithError超时时成功地触发timeoutIntervalForResourceNSURLSessionDelegate方法。 配置= backgroundSessionConfigurationWithIdentifier:@"com.xxx.xxx";NSURLSessionConfiguration = NSURLSessionConfiguration config.timeoutIntervalForRequest = 20.0f;config.timeoutIntervalForResource = 20.0f;self.session = NSURLSession sessionWithConfiguration:config委托:self delegateQueue:nil; 但是,像下面这样设置超时并不是 self.session.configuration.timeoutIntervalForResource =20.0f,self.session.configuration.timeoutIntervalForRequest = 20.0f;
您正在尝试在会话实例化后更改配置设置。在实例化会话之前,必须调整配置设置。正如文档所说(强调后加):
从iOS 9和OSX10.11开始,
NSURLSession对象存储传递给它们的初始化器的NSURLSessionConfiguration对象的副本,这样会话的配置在初始化后是不变的。传递给会话的初始化程序的配置对象上的可变属性的任何进一步更改或从会话的配置属性返回的值都不会影响该会话的行为。但是,可以使用修改后的配置对象创建新会话。
https://stackoverflow.com/questions/74088492
复制相似问题