Latest web development tutorials

Swift процесс деструктор

Перед тем, как экземпляр класса отпущена, вызывается деструктор немедленно. Используйте ключевые слова deinit для обозначения деструктор, используйте аналогичную функцию инициализации init , чтобы отметить. Деструкторы относится только к типам классов.


Принцип процесса Destructor

Swift будет автоматически освободить экземпляр больше не требуется, чтобы высвободить ресурсы.

Swift с помощью автоматического подсчета ссылок на (ARC) обрабатывает экземпляры управления памятью.

Обычно, когда вам не нужно вручную экземпляр освобождается для очистки. Тем не менее, при использовании собственных ресурсов, возможно, потребуется сделать некоторые дополнительные очистки.

Например, если вы создаете пользовательский класс, чтобы открыть файл и записать некоторые данные, возможно, должны быть освобождены до экземпляра класса, чтобы закрыть файл.

грамматика

В определении класса, каждый класс может иметь не более одного деструктора. Деструктор без каких-либо параметров, без скобок в редакции:

deinit {
    // 执行析构过程
}

примеров

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

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

Выход выше выполнение программы:

1
0

Когда шоу = ноль утверждение выполняется, калькулятор минус 1, показывают, что память будет освобождена.

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

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

var show: BaseClass? = BaseClass()

print(counter)
print(counter)

Выход выше выполнение программы:

1
1