分配自定义URLSessionDelegate是否会覆盖未实现方法的默认行为?

时间:2019-09-26 21:33:01

标签: swift foundation urlsession

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)

对于我未实现的方法,是否会覆盖“系统提供的委托”中的任何其他行为?

1 个答案:

答案 0 :(得分:1)

SessionDelegate类中未重写的任何(可选)函数都将尊重原始函数的默认实现行为。

为了检查每个功能的默认行为,请参阅头文件中的文档(选项+单击URLSessionTaskDelegate)或在此处:

https://developer.apple.com/documentation/foundation/urlsessiontaskdelegate

相关问题