Используете?в вашем аутлете сделает ваш код недоступным для отслеживания
Сбои очень хороши в некоторых сценариях, потому что если нет сбоев, становится очень трудно отследить даже небольшую ошибку.
Рассмотримпримеры @IBOutlet с !
:
@IBOutlet var wLabel: UILabel!
wLabel.isEnabled = true
Просто удалите соединение с вашей этикеткой Outlet из раскадровки и запустите приложение, ваше приложение упадет на wLabel.isEnabled = true
.Поскольку у вас произошел сбой, вы можете добраться до раскадровки и посмотреть, правильное ли соединение.В случае, если нет подключения, добавьте его и, черт возьми!Вы легко решили проблему.
Теперь рассмотрим примеры @IBOutlet с ?
:
@IBOutlet var wLabel: UILabel?
wLabel?.isEnabled = true
Сделайте то же самое, просто удалите соединение с вашимИзвлеките ярлык из вашей раскадровки и запустите приложение, ваше приложение вообще не рухнет.Вы не сможете узнать об ошибке, поэтому ваш код станет беспорядочным и непостижимым.
Ребята из Apple были очень осведомлены о дополнительных возможностях, они по какой-то причине принудительно развернули @IBOutlet
.И, конечно, нет никакой разницы в производительности между !
и ?