Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda