Swift - Desinicialización
Antes de que se deba desasignar una instancia de clase, se debe llamar a 'desinicializador' para desasignar el espacio de memoria. La palabra clave 'deinit' se utiliza para desasignar los espacios de memoria ocupados por los recursos del sistema. La desinicialización solo está disponible en tipos de clase.
Desinicialización para desasignar espacio de memoria
Swift 4 desasigna automáticamente sus instancias cuando ya no son necesarias, para liberar recursos. Swift 4 maneja la administración de memoria de instancias a través del conteo automático de referencias (ARC), como se describe en Conteo automático de referencias. Normalmente, no es necesario realizar una limpieza manual cuando se desasignan las instancias. Sin embargo, cuando esté trabajando con sus propios recursos, es posible que deba realizar una limpieza adicional usted mismo. Por ejemplo, si crea una clase personalizada para abrir un archivo y escribir algunos datos en él, es posible que deba cerrar el archivo antes de que se desasigne la instancia de la clase.
var counter = 0; // for reference counting
class baseclass {
init() {
counter++;
}
deinit {
counter--;
}
}
var print: baseclass? = baseclass()
print(counter)
print = nil
print(counter)
Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:
1
0
Cuando se omite la declaración print = nil, los valores del contador se mantienen iguales ya que no se desinicializa.
var counter = 0; // for reference counting
class baseclass {
init() {
counter++;
}
deinit {
counter--;
}
}
var print: baseclass? = baseclass()
print(counter)
print(counter)
Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:
1
1