Предупреждение: ненужная проверка минимальной цели развертывания
У меня есть класс Swift, который связан с несколькими целями с различными целями развертывания, основной проект имеет минимальное требование iOS 7, и есть расширение с целью iOS 8.
Теперь, когда я компилирую проект, компилятор выдает предупреждение в этой строке кода:
if #available(iOS 8.0, *) { ... }
"Ненужная проверка для" iOSApplicationExtension "; минимальная цель развертывания гарантирует, что защита всегда будет истинной"
Я проверил параметры настройки сборки и не нашел переключателя, чтобы убить быстрые предупреждения.
Я попытался определить целевую версию iOSApplicationExtension отдельно по этой строке, но безуспешно:
if #available(iOS 8.0, iOSApplicationExtension 8.0, *) { ... }
Есть ли способ подавить это раздражающее сообщение?
3 ответа
Нашел уродливый обходной путь, чтобы заставить замолчать предупреждение, но я надеюсь, что есть лучший способ:
В настройках сборки целей iOS 8+ я определил флаг предварительной компиляции в Настройках сборки -> Swift Compiler - Пользовательские флаги -> Другие флаги Swift:
-D iOS8target
Затем я изменил код следующим образом:
#if iOS8target
// iOS 8+ compatible code
#else
if #available(iOS 8.0, *) {
// repeat iOS 8+ compatible code again!
} else {
// iOS 7 code
}
#endif
Это не рефакторинг и некрасиво, но это работает!
ОБНОВЛЕНИЕ: есть быстрый компилятор -suppress-warnings
опустить все предупреждения. Но это также подавляет полезные предупреждения. Также, если есть только один конкретный файл, который выдает предупреждения, вы можете использовать -w
флаг в области фаз строительства. Это также подавит полезные предупреждения, но ограничено одним файлом.
Следующая версия Cocoapod (после 0.39.0) должна решить эту проблему. Проверьте это для более подробной информации.
Пожалуйста, проверьте цель развертывания в вашем общем и установите от 9.0 до 7.0 или меньше. это предупреждение будет удалено автоматически.