Latest web development tutorials

proceso destructor Swift

Antes de liberar una instancia de una clase, se llama al destructor inmediatamente. Use palabras clave deinit para marcar el destructor, un uso similar función de inicialización init para marcar. Los destructores se aplica sólo a los tipos de clase.


Principio del proceso destructor

Swift se liberará automáticamente la instancia ya no es necesaria para liberar recursos.

Swift por conteo automático de Referencia (ARC) se encarga de los casos de gestión de memoria.

Por lo general, cuando no es necesario manualmente ejemplo, se libera de limpiar. Sin embargo, al utilizar sus propios recursos, es posible que tenga que hacer un poco de limpieza extra.

Por ejemplo, si crea una clase personalizada para abrir un archivo y escribir algunos datos, es posible que deba ser puesto en libertad antes de la instancia de clase para cerrar el archivo.

gramática

En la definición de la clase, cada clase puede tener como máximo un destructor. Destructor sin ningún parámetro, sin paréntesis en el texto:

deinit {
    // 执行析构过程
}

Ejemplos

var counter = 0;  // 引用计数器
class BaseClass {
    init() {
        counter++;
    }
    deinit {
        counter--;
    }
}

var show: BaseClass? = BaseClass()
print(counter)
show = nil
print(counter)

La salida por encima de la ejecución del programa es:

1
0

Cuando se ejecuta el programa = instrucción nula, la calculadora menos 1, SHOW se libera la memoria.

var counter = 0;  // 引用计数器

class BaseClass {
    init() {
        counter++;
    }
    
    deinit {
        counter--;
    }
}

var show: BaseClass? = BaseClass()

print(counter)
print(counter)

La salida por encima de la ejecución del programa es:

1
1