Назначает ли пользовательский URLSessionDelegate переопределение поведения по умолчанию для методов, которые не реализованы? - PullRequest
1 голос
/ 27 сентября 2019

В документации для 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 голосов
/ 27 сентября 2019

Любые (необязательные) функции, которые вы не переопределяете в своем классе SessionDelegate, будут учитывать поведение реализации исходных функций по умолчанию.

Чтобы проверить поведение по умолчанию для каждой функции, см.документация в заголовочных файлах (опция + клик по URLSessionTaskDelegate) или здесь:

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

...