Видеокурсы по изучению языка программирования Swift. Подробнее

Как работает деинициализация

Если вы нашли опечатку в тексте, выделите ее и нажмите CTRL + ENTER.

Swift автоматически освобождает ваши экземпляры, что освобождает память в свою очередь, когда они больше не нужны. Swift берет на себя управление памятью экземпляров через ARC(automatic reference counting), что будет объяснено в разделе Автоматический подсчет ссылок. Обычно вам не нужно вручную чистить память, когда ваши экземпляры освобождаются. Однако, когда вы работаете с вашими собственными ресурсами, вам, возможно, понадобится проводить дополнительную чистку. К примеру, если вы создаете свой класс для открытия файла и записи в него какой-то информации, а потом его закрываете, то вам понадобится закрыть файл до того как вы освободите экземпляр класса.

Определения класса могут иметь максимум один деинициализатор на один класс. Деинициализатор не принимает ни одного параметра и пишется без круглых скобок:

deinit {
  // проведение деинициализации
}

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

Так как экземпляр не освобождается до тех пор пока не будет вызван деинициализатор, то деинициалиатор может получить доступ ко всем свойствам экземпляра, который он вызывает, и может изменить свое поведение, основываясь на этих свойствах(например, имя файла, который должен быть закрыт).

 

Swift: 
4.0