Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

150
Visualizações
conforme a un protocolo requiere que la variable delegada esté disponible en ios13

tener este protocolo

 public protocol URLSessionWebSocketTaskProtocol { func send(_ message: URLSessionWebSocketTask.Message, completionHandler: @escaping (Error?) -> Void) func receive(completionHandler: @escaping (Result<URLSessionWebSocketTask.Message, Error>) -> Void) func sendPing(pongReceiveHandler: @escaping (Error?) -> Void) func cancel(with closeCode: URLSessionWebSocketTask.CloseCode, reason: Data?) func resume() }

y conforme a ella en esta parte

 extension URLSessionWebSocketTask: URLSessionWebSocketTaskProtocol {}

funciona bien, pero necesito tener una propiedad de delegado en el protocolo, así que modifiqué el protocolo a este

 public protocol URLSessionWebSocketTaskProtocol { func send(_ message: URLSessionWebSocketTask.Message, completionHandler: @escaping (Error?) -> Void) func receive(completionHandler: @escaping (Result<URLSessionWebSocketTask.Message, Error>) -> Void) func sendPing(pongReceiveHandler: @escaping (Error?) -> Void) func cancel(with closeCode: URLSessionWebSocketTask.CloseCode, reason: Data?) func resume() var delegate: URLSessionTaskDelegate? { get set}

}

ahora el compilador dice que

El protocolo 'URLSessionWebSocketTaskProtocol' requiere que 'delegate' esté disponible en iOS 13.0.0 y posteriores

la versión mínima de destino está establecida en iOS 13, por lo que debería ser necesario agregar el @disponible (iOS 13.0, *), pero se agregó de cualquier manera y no hay cambios, los compiladores siguen diciendo que el protocolo requiere que el delegado esté disponible en iOS 13 URLWebSocketTask no tiene una propiedad delegada per se, hereda de URLSessionTask que tiene una propiedad delegada de tipo URLSessionTaskDelegate y URLWebSocketTaskDelegate se ajusta a URlSessionTaskDelegate.

Entonces, ¿cómo podría agregar un delegado al protocolo y la conformidad no muestra ese error?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La URLSessionWebSocketTask es una NSURLSessionTask , que solo tiene delegate (!!) desde iOS 15:

 @interface NSURLSessionTask : NSObject <NSCopying, NSProgressReporting> @property (nullable, retain) id <NSURLSessionTaskDelegate> delegate API_AVAILABLE(macos(12.0), ios(15.0), watchos(8.0), tvos(15.0));

entonces, si desea ajustarse a ese contrato API, debe hacer lo mismo en su protocolo, como:

 public protocol URLSessionWebSocketTaskProtocol { // ... other methods here @available(iOS 15, *) // << here !! var delegate: URLSessionTaskDelegate? { get set } }

por supuesto, la alternativa es hacer que la extensión se limite a iOS15+, como

 @available(iOS 15, *) extension URLSessionWebSocketTask: URLSessionWebSocketTaskProtocol { }

Verificado con Xcode 13.2.1

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda