Latest web development tutorials

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