W Artykuł, widziałem fragment kodu jak poniżej:

extension URLSessionDataTask: Cancellable {}

extension URLSession: NetworkService {
   public func fetchData(with request: URLRequest, handler: @escaping (Data?, URLResponse?, Error?) -> Void) -> AnyCancellable {
      let task = dataTask(with: request, completionHandler: handler)
      task.resume()
      return AnyCancellable(task)
   }
}

Jest kilka rzeczy, których nie rozumiem:

  1. Jaki jest celem, aby UrlsessionDatatask jest zgodny z protokołem "Anuldable";
  2. Jeśli UrlsessionDatatask odpowiada protokołu "anulowany", dlaczego nie wdraża metod, które wymaga protokołu "anulowany";
  3. Kiedy sprawdzam inicjałę Aniancelectleble, nie ma inicjału, który akceptuje argument, więc co robi "Anyancelleble (zadanie)" i czy jest poprawny?

Doceń każdą pomoc.

-2
spencerfeng 13 kwiecień 2021, 15:11

1 odpowiedź

Najlepsza odpowiedź
  1. Jaki jest cel uczynienia URLSESSESSIONTATASTASK do protokołu "Anuldable"?

Więc możesz użyć AnyCancellable. AnyCancellable Inicizer działa tylko z typami zgodnymi z Cancellable.

  1. Jeśli UrlsessionDatask jest zgodny z protokołem "anulowanym", dlaczego nie wdraża metod, które wymaga protokołu "anulowane";

Cancallable wymaga, aby była metoda cancel i store(in:). cancel już istnieje na URLSessionTask - klasa bazowa URLSessionDataTask i store(in:) jest zaimplementowana jako rozszerzenie na Cancellable zapewniając domyślną implementację.

  1. Kiedy sprawdzam inicjał IITANCELLOWE, nie ma inicjału, który akceptuje argument, więc co robi "Anyancelled (zadanie)" i czy jest to poprawne?

{{X0}. > to akceptuje Cancellable

1
New Dev 13 kwiecień 2021, 12:31