Есть много ситуаций, когда пустой return
, за которым следует другая строка кода, заставляет Swift думать, что вы пытаетесь вернуть эту строку кода. Ситуация менее запутанная, чем раньше, потому что теперь есть по крайней мере предупреждение, чтобы рассказать вам об этом (и ситуация возникает в гораздо меньшем диапазоне случаев, чем раньше):
@IBAction func doDismiss(_ sender: Any) {
return
self.presentingViewController?.dismiss(animated:true)
}
Этот код выглядит допустимым, но он не компилируется, в результате получается странная на первый взгляд ошибка компиляции:
Value of optional type 'Void?' must be unwrapped to a value of type ‘Void'
К счастью, в этом случае причину странности теперь также раскрывает предупреждение (обычно):
Expression following 'return' is treated as an argument of the 'return'
Решением всегда было добавление точки с запятой после return
. Действительно, для тех из нас, кто использовал Swift начиная со Swift 1, добавление точки с запятой после голого return
является практически рефлекторным действием, даже если в наши дни оно больше не требуется.
Ваша ситуация в основном относится к той же проблеме. Проблема в том, что вы не получите пояснительное предупреждение.