Implicitly unwrapped optional — это специальный тип optional, который автоматически разворачивается при обращении, без необходимости явного синтаксиса разворачивания как if let или guard let.
Объявляется с использованием ! вместо ? после названия типа:
var username: String! = nil
Implicitly unwrapped optionals подходят в специфических сценариях, когда значение начинается как nil, но гарантированно будет присвоено перед первым использованием:
@IBOutlet имеют значение nil до загрузки view, но надёжно устанавливаются послеinit, но оно будет присвоено сразу послеОбращение к implicitly unwrapped optional, пока он всё ещё nil, вызывает краш во время выполнения:
var username: String!
print(username) // Fatal error: unexpectedly found nil
Implicitly unwrapped optionals существуют как инструмент удобства, а не как гарантия безопасности. Использовать их стоит редко и только когда ты уверен, что значение будет присвоено до первого обращения. В большинстве случаев предпочитай обычные optionals с безопасным разворачиванием, чтобы избежать неожиданных крашей.
Implicitly unwrapped optionals объявляются с использованием синтаксиса ! и автоматически unwrap при доступе, исключая необходимость явного unwrapping через механизмы вроде if let или guard let.
Новый — ещё не проверен сообществом
Вы