Как избавиться от версии IOS "частично: введено в IOS X" предупреждения в Xcode
Итак, у меня есть места, где вещи доступны только после определенной версии. Одним из примеров является некоторые новые материалы NFC, которые я представил в своем приложении:
@property(nonatomic, retain) NFCNDEFReaderSession *nfcSession;
Я также использую его в методах, где я получаю его, хотя я проверяю наличие класса, например:
if ([NFCNDEFReaderSession class]){
мое приложение работает нормально, но я получаю предупреждение о xcode
NFCNDEFReaderSession is partial: introduced in iOS 11.0
Я огляделся, но не нашел способа сообщить компилятору, что он прав, и избавиться от предупреждения.
Указатели высоко ценят!
Ответы
Ответ 1
Добавьте NS_AVAILABLE_IOS (11.0) в конец имени метода. Например:
- (BOOL)tableView:(UITableView *)tableView canHandleDropSession:(id<UIDropSession>)session NS_AVAILABLE_IOS(11.0) {
}
Вызов метода может быть завершен следующим образом, чтобы отключить новое предупреждение API
if (@available(iOS 11.0, *)) {}
Ответ 2
Вы можете отключить определенные предупреждения по частям вашего кода, добавив вокруг него "прагмы" Клана. В этом случае:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunguarded-availability"
// your code
#pragma clang diagnostic pop
Документация: https://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas
Ответ 3
Чтобы отключить предупреждение, измените цель "Другие предупреждающие флаги" на:
- -Wno-частичная доступность
- -Wno-неохраняемая доступности