Как избавиться от версии 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-неохраняемая доступности