deinit — деинициализация. Вызывается перед освобождением экземпляра класса. Деинициализаторы доступны только для классовых типов.
Как правило, deinit не вызывается специально, что означает — не нужно вручную чистить память. Swift берет эту роль на себя, работает это при помощи автоматического подсчета ссылок (ARC).
В ряде ситуаций, когда память нуждается в ручной очистке, вызывается деинициализатор, например, при работе с собственными ресурсами.
Пример использования deinit
Деинициализацию используют при создании собственного класса для редактирования файлов (запись информации в файл). При этом, важно самостоятельно проследить за закрытием этого файла перед тем, как освободится экземпляр класса.
На один класс указывается максимум один деинициализатор. Деинициализатор не принимает ни одного параметра и пишется без круглых скобок:
deinit {
// деинициализация
}
Деинициализация вызывается автоматически перед освобождением экземпляра.
Пример:
class Foo {
deinit {
print("Deinitializing")
}
}
func bar() {
var foo: Foo? = Foo()
foo = nil
print("Leaving scope")
}
bar()
При выполнении этого кода появляется следующий вывод:
Deinitializing
Leaving scope
deinit вызывается в тот момент, когда счетчик ссылок на объект падает до нуля, в 9 строчке кода. Таким образом, деинициализация происходит перед освобождением экземпляра.
Больше информации:
Выразить благодарность или найти уникальный материал вы можете в boosty.
Подписывайтесь на мой Telegram-канал iOS Interview Channel, чтобы не пропустить новый материал.