在URLSessionDelegate
的文档中说:
您的URLSession对象不需要委托。如果没有代表 被分配,使用系统提供的委托,并且您必须提供 完成回调以获取数据。
我只需要实现这样的一种方法:
class SessionDelegate: NSObject, URLSessionTaskDelegate {
func urlSession(_ session: URLSession, task: URLSessionTask, willPerformHTTPRedirection response: HTTPURLResponse, newRequest request: URLRequest, completionHandler: @escaping (URLRequest?) -> Void) {
var request = request
request.httpMethod = task.originalRequest?.httpMethod ?? request.httpMethod
completionHandler(request)
}
}
然后像这样初始化我的会话:
self.session = URLSession(configuration: config, delegate: SessionDelegate(), delegateQueue: nil)
对于我未实现的方法,是否会覆盖“系统提供的委托”中的任何其他行为?
答案 0 :(得分:1)
在SessionDelegate
类中未重写的任何(可选)函数都将尊重原始函数的默认实现行为。
为了检查每个功能的默认行为,请参阅头文件中的文档(选项+单击URLSessionTaskDelegate)或在此处:
https://developer.apple.com/documentation/foundation/urlsessiontaskdelegate