Sobes.tech
Junior — Middle

¿Qué causa la aparición de fugas de memoria en las aplicaciones?

sobes.tech AI

Respuesta de la IA

Las fugas de memoria en las aplicaciones ocurren cuando la memoria asignada a objetos o datos no se libera después de que dejan de ser necesarios. En iOS, esto a menudo está relacionado con:

  • Ciclos de referencias entre objetos (retained cycles), especialmente al usar ARC (Contador de Referencias Automático). Por ejemplo, cuando dos objetos se refieren entre sí con referencias fuertes, no se liberan.
  • Uso incorrecto de cierres (closures), que capturan self con una referencia fuerte.
  • No liberar recursos como temporizadores, observadores o descriptores de archivos.

Ejemplo de ciclo de retención con cierre:

class ViewController {
    var closure: (() -> Void)?

    func setup() {
        closure = {
            print(self) // self se captura fuertemente, creando un ciclo
        }
    }
}

Para evitar fugas, se utilizan referencias débiles (weak) o no poseídas (unowned) en los cierres y se controla la gestión correcta del ciclo de vida de los objetos.