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

92
Visualizações
Declarar débil en el controlador de finalización de respuesta

Estoy aprendiendo sobre débil vs fuerte y todavía no lo entiendo completamente. ¿Cómo puedo declarar una respuesta débil en la siguiente función para no tener un ciclo retenido?

 AF.request(url, method: .get).validate().responseData { [weak self] response in guard let data = response.data else { completionHandler(.failure(.apiFailed)) return } do { let decodedData = try JSONDecoder().decode(T.self, from: data) DispatchQueue.main.async { completionHandler(.success(decodedData)) } } catch { completionHandler(.failure(.corruptedData)) return } }

En este momento tengo una advertencia de xcode que dice:

Variable 'self' was written to, but never read

ingrese la descripción de la imagen aquí

¿Cómo puedo leerlo usando débil?

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

0

Un ciclo de retención solo puede ocurrir cuando un objeto termina siendo dueño de sí mismo a través de una serie de relaciones strong , generalmente a través de uno o más objetos en una cadena. Por ejemplo, si un objeto A tiene una relación de propiedad con un objeto B y el objeto B tiene una relación de propiedad con el objeto A , entonces A termina con una relación de propiedad consigo mismo, lo que puede evitar que se desasigne. Romper este ciclo requiere que uno de estos objetos cambie su propiedad a una relación sin propiedad ( weak o unowned propiedad). (Esto también puede suceder si A almacena una referencia strong directamente a sí mismo, o si la cadena va A -> B -> C -> D -> A , o cualquier otra configuración).

En el contexto de devoluciones de llamada como esta, el riesgo que corre con los ciclos de retención es que si el objeto A almacena un cierre que tiene una referencia strong (el valor predeterminado implícito) a A en algún lugar dentro de él, se refiere cíclicamente a sí mismo.

Sin embargo: esto solo sucede si el cierre realmente tiene una razón para mantener una strong referencia a A en primer lugar. Su cierre, por ejemplo, nunca se refiere a self dentro de él, por lo que no tendría ninguna razón para mantener una referencia a self , strong o no. Los cierres solo mantienen referencias (o "cerrar", por lo tanto, "cierre") a las cosas que se usan dentro de ellos, y self no lo es.

De ahí la advertencia: nunca está "leyendo" (es decir, accediendo) a self en ningún lugar dentro del cierre, por lo que el [weak self] es completamente innecesario.

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