processo destrutor Swift
Antes de uma instância de uma classe é liberada, o destruidor é chamado imediatamente. Use palavras-chave deinit
para marcar o destruidor, utilize semelhante função de inicialização init
para marcar. Destruidores só se aplica aos tipos de classe.
princípio processo Destructor
Swift vai lançar automaticamente a instância não é mais necessário para liberar recursos.
Swift pela contagem de referência automático (ARC) lida com casos de gerenciamento de memória.
Normalmente, quando você não precisa manualmente instância é liberada para limpar. Entretanto, ao usar os seus próprios recursos, você pode precisar de fazer alguma limpeza extra.
Por exemplo, se você criar uma classe personalizada para abrir um arquivo e gravar alguns dados, você pode precisar de ser lançado antes de a instância da classe para fechar o arquivo.
gramática
Na definição da classe, cada classe pode ter no máximo um processo de destruição. Destructor sem quaisquer parâmetros, sem parênteses na redação:
deinit { // 执行析构过程 }
Exemplos
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) show = nil print(counter)
A saída de execução de programa acima é:
1 0
Quando o show = declaração nil é executado, a calculadora menos 1, mostram a memória será liberada.
var counter = 0; // 引用计数器 class BaseClass { init() { counter++; } deinit { counter--; } } var show: BaseClass? = BaseClass() print(counter) print(counter)
A saída de execução de programa acima é:
1 1