在 HTTPS 主机的情况下创建多个 NSURLSession 对象

Creating multiple NSURLSession objects in case of HTTPS host

我想知道在连接到 HTTPS 主机时创建多个 NSURLSession 对象好吗?我问这个的原因是因为我应该在初始 TLS 握手期间评估服务器证书(服务器接受没有证书的客户端)而我要做的地方是 NSURLSessionDelegateURLSession:didReceiveChallenge:completionHandler:.

但这意味着我应该创建一些基础 class 来实现此方法,并在将它们用于其他方式(例如 URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:.

时从中派生所有未来的委托

此外,它还让人担心 URLSession:didReceiveChallenge:completionHandler: 会在我创建的每个 NSURLSession 中被调用,从而产生额外的开销。至于 HTTP/1.1 Connection: keep-alive 应该是默认行为,并且(理想情况下)新创建的 NSURLSession 应该使用来自某些 连接池 的连接。

我在 this 技术问答中找到了问题的答案:

Since NSURLSession maintains it's own TLS session cache...

所以我想如果不想每次执行连接时都进行 TLS 握手,最好保留一个 NSURLSession