Какой метод запроса в SessionManager вызывается, когда тип соответствует как URLRequestConvertible, так и URLConvertible? - PullRequest
0 голосов
/ 26 ноября 2018

Это больше похоже на вопрос языка Swift ...

Скажем, у меня есть структура, которая соответствует протоколам URLRequestConvertible и URLConvertible:

struct Event {
    let title: String
}

extension Event: URLRequestConvertible {
}

extension Event: URLConvertible {
}

let anEvent = Event(title: "testing")

Alamofire.request(anEvent)

Какой метод request будетбыть вызванным?

В моем тесте один сURLRequestConvertible в качестве входного аргумента (L156) вызывается.

Можете ли вы дать мне несколько советов, где это обсуждалось в языковом сообществе Swift?(Я не очень уверен в терминологии информатики для такого рода проблем)

1 Ответ

0 голосов
/ 26 ноября 2018

Это называется перегрузкой методов в объектно-ориентированном программировании.

Обратите внимание на вызов, который вы делаете:

Alamofire.request(anEvent)

И методы, на которые вы обратили наше внимание:

public func request( //(1)
_ url: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoding: ParameterEncoding = URLEncoding.default,
headers: HTTPHeaders? = nil)
-> DataRequest

public func request(_ urlRequest: URLRequestConvertible) -> DataRequest //(2)

Вызов Alamofire.request(anEvent) вызовет вторую функцию, так как она соответствует сигнатуре метода .

Вы можете узнать о перегрузке метода практически в любом учебном материале ООП.

...