有了新的NSURLSession,NSURLSessionConfiguration对象上现在有了一个timeoutIntervalForRequest来创建 session 。
但是NSURLRequest对象上仍然有一个timeoutInterval,可用于在 session 中创建NSURLSessionTask。
我的问题是,如果配置中将timeoutIntervalForRequest设置为30,但是用于创建任务的NSURLRequest使用的timeoutInterval为60,那么实际上将使用哪个超时间隔?
最佳答案
作为对iOS 7.0.3的调查,与timeoutInterval
一起使用时,NSURLRequest
的NSURLSession
不会产生任何影响。
无论您是否为timeoutIntervalForRequest
设置NSURLSessionConfiguration
,timeoutInterval
都将被忽略。
您可以使用我的微型示例应用程序NetworkTimeoutSample来检查此行为。
当您为“URLReq”字段设置1(影响timeoutInterval
的NSURLRequest
)时,然后单击“带有URLRequest的NSURLSession”按钮,您的 session 将不会发生超时错误。
如果您想为timeoutIntervalForResource
的timeoutIntervalForRequest
获得相同的超时效果,您也可能会认识到应该将NSURLSession
而不是timeoutInterval
设置为NSURLRequest
。
如果同时为timeoutIntervalForRequest
设置timeoutIntervalForResource
和NSURLSessionConfiguration
值,则较小的值将受到影响(我认为此行为与当前API文档不同)。
没有关于这些规范的文档,因此在将来的iOS版本中可能会进行更改。
关于ios - NSURLSessionConfiguration timeoutIntervalForRequest与NSURLSession timeoutInterval,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19688175/