В сеансе WWDC 2019 402 « Что нового в Swift », говорящий при обсуждении функции Swift 5.1 Непрозрачный тип результата (SE-0244) упоминает, что эта функция будет работают только на новых ОС:
Требуется новая поддержка Swift во время выполнения
Доступно в MacOS Catalina, iOS 13, tvOS 13, watchOS 6 и более поздних версиях
Guard использует с проверкой доступности при развертывании в более ранних версиях ОС
В Xcode 11 я не получаю никаких ошибок сборки (или предупреждений), если пишу код, используя эту функцию, при таргетинге на iOS 11 и выше. Я не завернул ни один код в if #available(iOS 13.0, *)
проверках. E.g.:
protocol Shape { }
class Square: Shape { }
class Triangle: Shape { }
func foo() -> some Shape {
return Square()
}
и затем вызов foo()
из некоторого кода в моем приложении.
Что произойдет, если этот код будет работать на устройствах до iOS 13? Является ли отсутствие ошибки сборки самой ошибкой? Существует ли полный список функций Swift 5.1, требующих новой поддержки времени выполнения и, следовательно, конкретной версии ОС?