Я работаю над проектом с минимальной целевой версией iOS 9.0, и мы должны интегрировать стороннюю платформу с минимальной совместимостью iOS 11.
Каркас было установлено как Необязательное на этапах сборки, но у нас есть проблемы с реализацией протоколов, объявленных в платформе.
Следуя предложению другого ответа, найденного на SO (который я не могу восстановить в данный момент ), мы попытались управлять реализацией в расширении с помощью условия доступности:
import ExternalFramework
@available (iOS 11.0,*)
extension MyClass: Delegate1, Delegate2, Delegate3{ //these are defined in ExternalFramework
func implementationOne(){ //here the compiler gets angry
//our code
}
...
}
Каждое удовольствие от реализации c помечается компилятором с ошибкой "Протокол 'Delegate1' требует, чтобы 'creationOne' был доступен в iOS 9.0.0 и новее "
Чего нам не хватает?